Leetcode-142. 環形連結串列 II
給定一個連結串列,返回連結串列開始入環的第一個節點。 如果連結串列無環,則返回 null。
為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該連結串列中沒有環。
說明:不允許修改給定的連結串列。
來源:力扣(LeetCode)
思路說明
設:入環節點為M,入環之前路徑長度為a(不包括入環節點M),環長度為b。慢指標和快指標第一次相遇時慢指標走了s步,快指標走了f步。
顯然:f=2s,f=s+nb
即:s=nb,f=2nb。
又:從出發走a+nb步一定可以到M,因此此時讓慢指標走a步就可以找到M。
因此相遇後,把快指標移到head節點,同時和慢指標一步一步前移,二者一定在M處相遇。
程式碼如下:
public class Solution {
public ListNode detectCycle(ListNode head) {
ListNode slow=head;
ListNode fast=head;
while(fast!=null&&fast.next!=null){
fast=fast.next.next;
slow=slow.next;
if(slow==fast){
fast=head;
while(slow!=fast){
slow=slow.next;
fast=fast.next;
}
return slow;
}
}
return null;
}
}
相關文章
- LeetCode-142-環形連結串列 IILeetCode
- 每日leetcode——142. 環形連結串列 IILeetCode
- 環形連結串列I、II(含程式碼以及證明)
- 力扣學習筆記:142. 環形連結串列 II力扣筆記
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- java環形連結串列約瑟夫環問題筆記Java筆記
- 演算法141. 環形連結串列演算法
- Python實現環形連結串列詳解Python
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- Linked List Cycle leetcode II java (尋找連結串列環的入口)LeetCodeJava
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- LeetCode-092-反轉連結串列 IILeetCode
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 約瑟夫環 佇列+連結串列佇列
- [演算法]向有序的環形單連結串列中插入新節點演算法
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列找環(python實現)Python
- 連結串列面試題(八)---約瑟夫環面試題
- 連結串列4: 迴圈連結串列
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題
- 連結串列入門與插入連結串列
- (連結串列)連結串列的排序問題排序
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 【演算法詳解】有環連結串列演算法
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- javascript中的連結串列結構—雙向連結串列JavaScript
- 判斷單連結串列是否存在環,判斷兩個連結串列是否相交問題詳解
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- LintCode 刪除排序連結串列中的重複數字 II排序
- LeetCode 之 JavaScript 解答第141題 —— 環形連結串列 I(Linked List Cycle I)LeetCodeJavaScript
- php連結串列PHP
- 連結串列操作