環形鍊錶II

2021-09-10 09:08:43 字數 1444 閱讀 5445

1. 問題描述

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

解釋:鍊錶中沒有環。

2. **實現第一步,首先通過快慢指標的方法判斷鍊錶是否有環。

第二步,如果有環,則尋找入環的第乙個節點。

具體的方法為,首先假定鍊錶起點到入環的第乙個節點a的長度為a【未知】,到快慢指標相遇的節點b的長度為(a + b)【已知,即slow和fast相遇的節點】。

快指標走過的長度是慢指標走過長度的兩倍,所以慢指標從節點b繼續走(a + b)又能回到b點,從節點b繼續走a又能回到a點(因為節點b距節點a(b - a),再走a就回到節點a了)。

注意到head到節點a的長度是a,那麼可以用乙個從head開始的指標p從節點b開始的慢指標slow同時出發,相遇的地方則是入環的第乙個節點a。

/**

* definition for singly-linked list.

* class listnode

* }*/public class solution

}//存在環,尋找入環節點

if(hascycle)

return p;

}else

return null;}}

環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...

環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。definition for singly linked ...

環形鍊錶II

題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。示例1 輸入 head 3,2,0,4 pos 1 輸出 返回索引為 1 的鍊錶節點 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例2 輸入 head 1,2 pos 0 輸出 返回索引為 0 的鍊錶節點 解釋...