142 環形鍊錶 II

2021-08-28 19:04:05 字數 672 閱讀 5796

還是快慢指標的問題, 當發現有環時,將fast指向head, fast一次向前移動乙個節點, 則fast和slow一定會在環的入口相遇.

證明:設s為slow指標走的節點個數, m為環的入口距head的位置

則第一次相遇時,fast和head相對於環入口的位置相同,

fast在環中的相對於環入口的位置在:  (2s-m)%n

slow在環中的相對於環入口的位置在: (s-m)%n

(2s-m)%n = (s-m)%n, 則s%n==0

將fast放回到head位置, 改變速度為1, fast和slow都經過m個節點後

fast的位置(m-m)%n == 0,   slow的位置(s+m-m)%n==0

fast和slow一定會在環的入口處再次相遇

/**

* definition for singly-linked list.

* class listnode

* }*/public class solution else

if (slow.next != null) else

if (fast == slow)

ans_node = fast;

break;}}

return ans_node;

}}

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。高階 你是否可以不用額外空間解決此題?definition for singly linked list.struct listnode class solution node set.insert...

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...

142 環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...