力扣學習筆記: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
- java環形連結串列約瑟夫環問題筆記Java筆記
- LeetCode-142-環形連結串列 IILeetCode
- Leetcode-142. 環形連結串列 IILeetCode
- 力扣--連結串列演算法力扣演算法
- 環形連結串列I、II(含程式碼以及證明)
- Go資料結構與力扣—連結串列Go資料結構力扣
- 力扣-203. 移除連結串列元素力扣
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- LVGL雙向連結串列學習筆記筆記
- 力扣(LeetCode) -143 重排連結串列力扣LeetCode
- 力扣 leetcode 86. 分隔連結串列力扣LeetCode
- TODO-力扣-707. 設計連結串列力扣
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- [Golang]力扣LeetBook—初級演算法—連結串列—迴文連結串列(快慢指標)Golang力扣演算法指標
- 001 通過連結串列學習Rust筆記之前言Rust筆記
- 001 透過連結串列學習Rust筆記之前言Rust筆記
- 力扣 147. 對連結串列進行插入排序力扣排序
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 連結串列學習(6)
- 單連結串列學習
- 力扣-83. 刪除排序連結串列中的重複元素力扣排序
- 演算法141. 環形連結串列演算法
- Python實現環形連結串列詳解Python
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- 筆記--連結串列演算法筆記演算法
- 單連結串列學習(一)
- 資料結構學習--連結串列資料結構
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 學習 JavaScript 資料結構(二)——連結串列JavaScript資料結構
- 學習 JS 資料結構(2):連結串列JS資料結構
- Linked List Cycle leetcode II java (尋找連結串列環的入口)LeetCodeJava
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 012 通過連結串列學習Rust之持久化單連結串列Rust持久化
- 012 透過連結串列學習Rust之持久化單連結串列Rust持久化