力扣學習筆記:142. 環形連結串列 II
題目:142.環形連結串列II
建議:先看環形連結串列Ⅰ
演算法:
雜湊表
- 和 Ⅰ類似,只是在碰到前面遇到過的結點,就返回該結點的地址即可
快慢指標
- 我們將入環結點之前的結點距離設為 a ,將在環上快慢指標相遇的結點逆時針到入環結點的距離設為 b ,將在環上快慢指標相遇的結點順時針到入環結點的距離設為 c 。
- 我們可以計算 a + n * c + (n + 1) * b = 2 * ( a + b) (快指標的速度是慢指標的兩倍)
- 化簡得 a = c + (n - 1) * ( b + c)
- 這樣子,我們知道,a 等於 c 加上 (n - 1)圈
- 我們可以設一個ptr指標指到起點,讓它和慢指標一起出發,最終會在入環結點碰頭,返回地址即可
原始碼
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
if(head == nullptr){
return nullptr;
}
ListNode* fast;
ListNode* low;
ListNode* ptr;
fast = head;
low = head;
ptr = head;
while(fast != nullptr && fast->next != nullptr && low != nullptr){
fast = fast->next->next;
low = low->next;
if(fast == low){
while(ptr != low){
ptr = ptr->next;
low = low->next;
}
return ptr;
}
}
return nullptr;
}
};
相關文章
- 每日leetcode——142. 環形連結串列 IILeetCode
- 環形連結串列II
- java環形連結串列約瑟夫環問題筆記Java筆記
- LeetCode-142-環形連結串列 IILeetCode
- Leetcode-142. 環形連結串列 IILeetCode
- 力扣--連結串列演算法力扣演算法
- 環形連結串列I、II(含程式碼以及證明)
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- Go資料結構與力扣—連結串列Go資料結構力扣
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- 每日演算法隨筆:環形連結串列演算法
- 力扣-203. 移除連結串列元素力扣
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- LVGL雙向連結串列學習筆記筆記
- 第四天:● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II面試題
- 力扣(LeetCode) -143 重排連結串列力扣LeetCode
- 力扣 leetcode 86. 分隔連結串列力扣LeetCode
- 141. 環形連結串列
- TODO-力扣-707. 設計連結串列力扣
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 程式碼隨想錄第4天 | 24. 兩兩交換連結串列中的節點、19.刪除連結串列的倒數第N個節點、面試題 02.07. 連結串列相交、142.環形連結串列II面試題
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- [Golang]力扣LeetBook—初級演算法—連結串列—迴文連結串列(快慢指標)Golang力扣演算法指標
- 001 通過連結串列學習Rust筆記之前言Rust筆記
- 001 透過連結串列學習Rust筆記之前言Rust筆記
- 力扣 147. 對連結串列進行插入排序力扣排序
- 程式碼隨想錄演算法訓練營day04|24.兩兩交換連結串列中的節點,19.刪除連結串列的倒數第N個節點,面試題 02.07.連結串列相交,142.環形連結串列II演算法面試題
- 連結串列學習(6)
- 單連結串列學習
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 演算法141. 環形連結串列演算法
- Python實現環形連結串列詳解Python
- 結構動力學教材-學習筆記筆記
- 力扣-83. 刪除排序連結串列中的重複元素力扣排序
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- 單連結串列學習(一)