鍊錶 尋找中間結點(快慢指標法)

2021-10-04 07:36:06 字數 593 閱讀 8189

一般方法

鍊錶這種無法隨機訪問的資料結構,要定位到中間結點的方法通常是先把整個鍊錶遍歷一遍,得到整個鍊錶的長度,再除以2,得到中間結點的位置,接著根據這個位置從頭結點開始找到這個結點,時間複雜度為o(1.5n)具體**如下

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

int mid = len /2;

pt = head;

while

(mid--

) pt = pt-

>next;

return pt;}}

;

快慢指標法

這是我在leetcode上學習到的方法,我自己把這種方法稱作長短腿法(感覺很形象)

class

solution

return shortleg;}}

;

長腿走兩步,短腿走一步,當長腿走到鍊錶末尾時,短腿剛好走到鍊錶的一半,時間複雜度為o(n)

鍊錶的中間結點(快慢指標)

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...

環形鍊錶(快慢指標法)

給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意 pos 不作為引數進行傳遞,僅僅是為了標識...

利用快慢指標尋找鍊錶中間節點

876.鍊錶的中間結點 這道題要求我們找到鍊錶中的中間位置,首先想到第一種方法,使用兩個指標,乙個從頭遍歷到尾部確定長度,乙個從頭遍歷到相應位置。那麼有沒有一遍遍歷就能解決的?那麼我們想到快慢指標,因為快慢指標往往可以做到一遍遍歷,在慢指標處找到答案 做法 慢指標走一步,快指標走兩步。這樣快指標到末...