leetcode解題之鍊錶的中間結點

2021-10-04 08:11:18 字數 1092 閱讀 6543

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

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

示例 1:

輸入:[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.

示例 2:

輸入:[1,

2,3,

4,5,

6]輸出:此列表中的結點 4

(序列化形式:[4,

5,6]

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

給定鍊錶的結點數介於 1 和 100 之間。

思路一是遍歷整個鍊錶放入map中並記錄鍊錶的長度len,取key=len/2的值

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

return map.

get(len/2)

;}}

思路二(官方學來的)是快慢指標,慢指標一次走乙個節點,快指標一次走兩個節點,這樣快指標的速度是慢指標的兩倍,當快指標走到末尾時,慢指標正好走到中間位置

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

return slow;

}}

leetcode解題之反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?笨人的方法,遍歷輸出鍊錶元素到列表,讓後再倒序遍歷列表建立新的鍊錶 definition for singly linked list.publi...

leetcode解題之回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false 示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?先寫乙個簡單的迭代法對比法 使用額外空間 definition for singly linked list.publi...

LeetCode解題 移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 definition for singly linked list.public class listnode class solution else 注意 遍歷完整個鍊錶之後,p...