142 環形鍊錶 II(找迴圈點)

2021-10-12 16:29:17 字數 589 閱讀 9377

第一次嘗試

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。表為無頭結點、單向。(由於涉及到結構體,所以寫不了完整的測試**,下面展示的**為leetcode中寫的**)(leetcode鏈結)

struct listnode*

detectcycle

(struct listnode* head)

struct listnode* fast = head;

struct listnode* slow = head;

//快慢指標法,迴圈遍歷找相遇點

while

(fast&&fast->next)

}//如果鍊錶無環,那麼就不會進入下面的迴圈中,而是指直接返回null

//有環就從頭結點和相遇點開始遍歷,直到二者相遇,返回交點

while

(fast&&fast->next)

fast = fast->next;

head = head->next;

}return

null

;}

發表於 2020-12-14 16:07

142 環形鍊錶 II

還是快慢指標的問題,當發現有環時,將fast指向head,fast一次向前移動乙個節點,則fast和slow一定會在環的入口相遇.證明 設s為slow指標走的節點個數,m為環的入口距head的位置 則第一次相遇時,fast和head相對於環入口的位置相同,fast在環中的相對於環入口的位置在 2s ...

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 輸出...