騰訊精選練習題42 環形鍊錶 II

2021-09-19 08:42:49 字數 1288 閱讀 2601

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回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...