演算法(常用) 快速找到鍊錶的中間節點

2021-10-10 05:23:55 字數 366 閱讀 3179

思路:利用快慢指標思想,快指標每次走兩步,慢指標走一步。當快指標走到底的時候,滿指標指向的就是鍊錶的中間節點。需要注意的是,當鍊表長度為偶數字的時候,則慢指標指向的是中間偏右的節點,奇數的時候,指向的是中間節點。

if

(head == null || head.next == null)

return

true

; listnode fast = head, slow = head;

while

(fast != null && fast.next != null)

// 如果 fast == null,則鍊錶長度為偶數,反之則為奇數。

快速找到長度未知的中間節點

利用快慢指標原理 設定兩個指標search mid都指向單鏈表的頭節點。其中 search的移動速度是mid的2倍。當 search指向末尾節點的時候,mid正好就在中間了。這也是標尺的思想。include using namespace std typedef struct node node t...

快速找到長度未知的中間節點

利用快慢指標原理 設定兩個指標search mid都指向單鏈表的頭節點。其中 search的移動速度是mid的2倍。當 search指向末尾節點的時候,mid正好就在中間了。這也是標尺的思想。include using namespace std typedef struct node node t...

鍊錶中間節點

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