給定一個鏈表,返回鏈表開始入環的第一個節點。 若是鏈表無環,則返回 null。 爲了表示給定鏈表中的環,咱們使用整數 pos 來表示鏈表尾鏈接到鏈表中的位置(索引從 0 開始)。 若是 pos 是 -1,則在該鏈表中沒有環。 說明:不容許修改給定的鏈表。node
示例1:算法
輸入:head = [3,2,0,-4], pos = 1
輸出:tail connects to node index 1
解釋:鏈表中有一個環,其尾部鏈接到第二個節點。
複製代碼
輸入:head = [1,2], pos = 0
輸出:tail connects to node index 0
解釋:鏈表中有一個環,其尾部鏈接到第一個節點。
複製代碼
輸入:head = [1], pos = -1
輸出:no cycle
解釋:鏈表中沒有環。
複製代碼
func detectCycle(head *ListNode) *ListNode {
slow,fast:=head,head
for{
//自始至終快慢未相遇,直接跳出就好
if fast==nil||fast.Next==nil {
break;
}
slow, fast = slow.Next,fast.Next.Next
//相遇了就像剛剛說的那樣咯
if slow==fast {
fast = head;
for{
if(slow==fast){
return slow
}
slow=slow.Next
fast=fast.Next
}
}
}
return nil
}
複製代碼
算法夢想家,來跟我一塊兒玩算法,玩音樂,聊聊文學創做,我們一塊兒天馬行空! spa