給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是
-1,則在該鍊錶中沒有環。
說明:不允許修改給定的鍊錶。
/**
* definition for singly-linked list.
* class listnode
* }*/public
class
solution
set.
add(head)
; head = head.next;
}return null;
}}
思路二:
也是雙指標,不過對上一題又進行了擴充套件。在找到兩個指標相遇的地點之後,記錄下該地點。
然後再使用兩個指標,乙個從煉表頭開始,乙個從相遇點開始,每次前進一步,在兩個指標相遇的地點,就是環的入口。
證明過程暫時不會,溜了
同理:時間複雜度為o(n),空間複雜度為o(1)。
啊!上個題裡的做法不可取,它fast一開始就比slow快一步,因為只需要碰到就行了。這裡需要他們從同一起點出發,要不然演算法就廢了。啊啊啊!折磨了我半天
public
class
solution
listnode slow = head;
listnode fast = head;
while
(fast!=null && fast.next!=null)}if
(slow!=fast)
listnode in = slow;
listnode out = head;
while
(in!=out)
return in;
}}
環形鍊錶 II
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...
環形鍊錶II
1.問題描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。為了表示給定鍊錶中的環,我們使用整數pos來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果pos是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 ...
環形鍊錶II
題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。示例1 輸入 head 3,2,0,4 pos 1 輸出 返回索引為 1 的鍊錶節點 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例2 輸入 head 1,2 pos 0 輸出 返回索引為 0 的鍊錶節點 解釋...