對於鍊錶的中某個位置結點的定位一般都會用到兩個鍊錶結點指標,例如鍊錶倒數第k個結點問題使用的是先後指標,該題中用到的快慢指標。
本題的具體解法就是快指標走兩步、慢指標走一步知道遍歷完結點,重點是分清題目所要求的中間結點。本題中如果鍊錶長度n為偶數,那麼中間結點位置就為n / 2 + 1;為奇數,中間結點位置也為n / 2 + 1。所以中間結點位置就為慢指標所在位置,而且不需要哨兵結點來輔助定位(一開始想的就是哨兵結點輔助定位,最後還變複雜了)。
**如下:
1class
solution
1011
return
pslow;12}
13 };
時間複雜度為o(n),空間複雜度為o(1)
鍊錶 LeetCode 876
原題 給定乙個帶有頭結點head的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。法一 遍歷兩次,第一次測出鍊錶長度,第二次遍歷至中間節點。struct listnode middlenode struct listnode head c c 2 while c retur...
LeetCode 876 鍊錶的中間結點
問題描述 給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnod...
LeetCode 876 鍊錶的中間結點
給定乙個帶有頭結點head的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的物件...