題目描述:給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。
示例1:
輸入:head = [3,2,0,-4], pos = 1
輸出:返回索引為 1 的鍊錶節點
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
示例2:
輸入:head = [1,2], pos = 0
輸出:返回索引為 0 的鍊錶節點
解釋:鍊錶中有乙個環,其尾部連線到第乙個節點。
示例3:
輸入:head = [1], pos = -1
輸出:返回 null
解釋:鍊錶中沒有環。
求解思路:快慢指標交點到環入口點的距離等於煉表頭到環入口點的距離。
建立快慢指標,迴圈尋找快慢指標的交點,找到交點後break迴圈;
若鍊錶指向存在null(即迴圈結束),則鍊錶為無環鏈表,返回null;
讓cur從鍊錶頭部head開始走,讓fast或slow(此處fast和slow是相同位置)從交點處走,cur與fast或slow的交點即為環的入口點。(交點到環入口點距離等於頭到入口點距離)。
**實現:
public
class
solution
//2.快慢指標,尋找快慢指標的交點
listnode fast = head;
listnode slow = head;
while
(fast != null && fast.next != null)
}//3.鍊錶指向存在null,則鍊錶為無環鏈表
if(fast == null || fast.next == null)
//4.讓cur從鍊錶頭部head開始走,讓fast或slow從交點處走,cur與fast的交點即為環的入口點。(交點到環入口點距離等於頭到入口點距離)
listnode cur = head;
while
(cur != fast)
return cur;
}}
環形鍊錶 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。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。definition for singly linked ...