給定乙個帶有頭結點 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...