步驟為:
判斷是否有環 —>沒有 return none
—>有 乙個乙個走直到在環的入口相遇
**如下:
class solution(object):
def detectcycle(self, head):
""":type head: listnode
:rtype: listnode
"""if head == none:
return head
slow = head
fast = head.next
while fast != none:
if(slow == fast):
slow = head
fast = fast.next
while slow != fast:
slow = slow.next
fast = fast.next
#print(slow.val, fast.val)
return slow
else:
slow = slow.next
if(fast.next == none):
return none
fast = fast.next.next
return none
beat 99%
數學味很濃的一道題,特別是後面解決在入口相遇的推理我很喜歡。
leetcode 騰訊精選50題 環形鍊錶
題目如下 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示...
leetcode 騰訊50題 21 50 翻轉鍊錶
給定乙個鍊錶,將鍊錶向右迴圈移動 kk 次,kk 是非負整數。輸入 1 2 3 4 5 null,k 2 輸出 4 5 1 2 3 null 解釋 向右移動1步後 5 1 2 3 4 null 向右移動2步後 4 5 1 2 3 null 輸入 0 1 2 null,k 4 輸出 2 0 1 nul...
LeetCode騰訊50題 148排序鍊錶
請注意!主要用來自己馬克自己的筆記,不是最優解!不是最優解!不是最優解!請不要噴我。關鍵點 題目要求在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。思路 o nlogn 快排 歸併 於是決定 使用歸併排序演算法對鍊錶進行排序。順便複習下各類排序演算法的時間 空間複雜度。演算法...