剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)
生活随笔
收集整理的這篇文章主要介紹了
剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個鏈表,返回鏈表開始入環的第一個節點。 從鏈表的頭節點開始沿著 next 指針進入環的第一個節點為環的入口節點。如果鏈表無環,則返回 null。
為了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。注意,pos 僅僅是用于標識環的情況,并不會作為參數傳遞到函數中。
- 示例 1:
輸入:head = [3,2,0,-4], pos = 1
輸出:返回索引為 1 的鏈表節點
解釋:鏈表中有一個環,其尾部連接到第二個節點。
- 示例 2:
輸入:head = [1,2], pos = 0
輸出:返回索引為 0 的鏈表節點
解釋:鏈表中有一個環,其尾部連接到第一個節點。
題解
- 思路,快慢指針,如果快指針追上慢指針,證明有環
- 數學推導
首先,如果有環,快指針一定能追上慢指針,假設:
(1)從頭節點到入換點距離為a;
(2)從入環點到相遇點距離為b;
(3)相遇點到頭節點距離為c;
設快指針追上慢指針時已走了n圈,則有等式
a + (b+c)n + b = 2(a+b);==>a + (n+1)b + nc = 2(a+b); ==> a = c + (n-1)(b+c);
- 由上面等式可知,c的距離等于a的距離
總結
以上是生活随笔為你收集整理的剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer Ⅱ 005.单词长度的最
- 下一篇: Spring Boot系列四 Sprin