LeetCode142 環形鍊錶II

2021-09-01 11:39:11 字數 787 閱讀 6617

題目描述:

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回null

說明:不允許修改給定的鍊錶。

高階:

你是否可以不用額外空間解決此題?

解法一:

class solution 

}if(len == 0) return null;

while(fast->next != slow)

fast = head;

slow = head;

while(len-- > 0)

while(fast != slow)

return fast;

}};

解法二:

我們只看有環的情況,就是head到第一次兩個指標fast slow相遇的節點的距離,設為a+b,其中a是head到入環點的距離,b是入環點到相遇點的距離,設環的長度為r,c是相遇點到入環點的距離,那麼c=r-b;所以有,2(a+b)=a+nr+b(a+b是慢指標距離,乘2就是fast指標),快指標肯定在環裡饒了那麼n圈,n大於等於1,上式化簡:a=(n-1)r+c;從這個式子我們發現,只要再來乙個指標從head開始,同時slow指標繼續走,就會在入環點相遇。

class solution 

return slow;}}

return null;

}};

leetcode 142 環形鍊錶

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。思路 首先通過快慢指標的方法判斷鍊錶是否有環 接下來如果有環,則尋找入環的第乙個節點。具體的方法為,首先假定鍊錶起點到入環的第乙個節點a的長度為a 未知 到快慢指標相遇的節點b的長度為 a b 這個...

leetcode 142環形鍊錶

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

Leetcode 142 環形鍊錶

問題重述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允...