LeetCode 鍊錶 鍊錶的中間節點

2022-08-20 08:48:11 字數 1314 閱讀 2919

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。

如果有兩個中間結點,則返回第二個中間結點。

示例:

輸入:[1,2,3,4,5]

輸出:此列表中的結點 3 (序列化形式:[3,4,5])

返回的結點值為 3 。 (測評系統對該結點序列化表述是 [3,4,5])。

注意,我們返回了乙個 listnode 型別的物件 ans,這樣:

ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = null.

輸入:[1,2,3,4,5,6]

輸出:此列表中的結點 4 (序列化形式:[4,5,6])

由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。

使用快慢指標。slow 和 fast 都從煉表頭 head 出發,slow 每次走一步,fast 每次走兩步,當 fast 為空時,slow 就是中間節點。**如下:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return slow;

}};

上面的那種寫法在鍊錶長度是偶數的情況下,返回的中間兩個節點的後乙個節點。如果想返回前乙個節點,則只需要將迴圈的條件fast!=nullptr && fast->next!=nullptr改成fast->next!=nullptr && fast->next->next!=nullptr

class solution 

return slow;

}};

還有一種方法就是先求鍊錶的長度 n,然後再從頭遍歷到第 n/2 個節點即可。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return curnode->next;

}int getlen(listnode* head)

return len;

}};

思路 1 拓展參考了:solution/kuai-man-zhi-zhen-zhu-yao-zai-yu-diao-shi-by-liwei/

LeetCode鍊錶 876鍊錶的中間節點

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

leetcode 鍊錶的中間節點

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

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...