給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回null
。
為了表示給定鍊錶中的環,我們使用整數pos
來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果pos
是-1
,則在該鍊錶中沒有環。
說明:不允許修改給定的鍊錶。
示例 1:
輸入:head = [3,2,0,-4], pos = 1輸出:tail connects to node index 1解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
示例 2:
輸入:head = [1,2], pos = 0輸出:tail connects to node index 0解釋:鍊錶中有乙個環,其尾部連線到第乙個節點。
示例 3:
輸入:head = [1], pos = -1輸出:no cycle解釋:鍊錶中沒有環。1、通過快慢指標判斷鍊錶是否有環
2、尋找入環的第1個節點
假定鍊錶起點到入環的第乙個節點a的長度為a(未知),到快慢指標相遇的節點b的長度為(a+b)(已知)。想知道a的值,因為fast指標走過長度始終是slow指標走過長度的2倍,所以,slow從p繼續走(a+b)又能回到b點,如果只走a個長度就能回到節點a。但是a的值是不知道的,注意到起點到a的長度是a,那麼可以用乙個從起點開始的新指標q和從節點b開始的慢指標同步走,相遇的地方就是入環的第乙個節點a。
**:
/**
* definition for singly-linked list.
* class listnode
* }*/public class solution
}if(hascycle)
return slow;
}return null;}}
騰訊精選練習題19 環形鍊錶
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數pos來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果pos是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸入 he...
騰訊精選練習題9 反轉鍊錶
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?方法一 通過記錄前乙個節點的值並通過指標不斷移動的方式 時間複雜度為o n 假設n是列表的長度,時間複雜度是o n 空間複雜度為o 1 defin...
騰訊精選練習題34 旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 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示例 2 輸入 0 1 2 nul...