鍊錶環問題總結

2021-08-25 22:14:14 字數 1178 閱讀 6888

1.given a linked list, determine if it has a cycle in it.

follow up:

can you solve it without using extra space?

判斷乙個鍊錶是否有環

思路:通過定義乙個fast指標初始指向頭節點,每次走兩步;定義乙個slow指標初始指向頭節點,每次走一步。如果它們能夠相遇,那麼鍊錶中存在環。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return false;

}};

2.given a linked list, return the node where the cycle begins. if there is no cycle, returnnull.

note:do not modify the linked list.

follow up:

can you solve it without using extra space?

找到環的入口節點。

思路:1.利用第1題的思路,通過定義乙個fast指標初始指向頭節點,每次走兩步;定義乙個slow指標初始指向頭節點,每次走一步。找到它們在環中相遇的節點。

此時,slow指標走了x步,fast指標走了2x步。假設圓環中有n個節點,那麼2x - x = nr,也就是x = nr。r為大於0的整數。

2.假設從鍊錶的頭節點到圓環入口處經過了y個節點,那麼,慢指標在圓環中經過的節點數為x-y。

根據 x = nr,慢指標還需經過y個節點,即又一次回到圓環的入口處。

所以,重新定義乙個指標temp初始指向頭節點,與slow節點一起,每次走一步。temp與slow相遇,即為圓環入口處。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution }}

return null;

}};

鍊錶 鍊錶環問題總結

給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?1 如何判斷是否存在環?對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到n...

鍊錶環問題總結

給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?1 如何判斷是否存在環?對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到n...

鍊錶環問題

給定乙個鍊錶,判斷該鍊錶中是否有環?如果有的話,環的長度是多少?環的入口是哪個節點?使用快慢指標策略,兩個指標都從頭指標出發,快指標每次走兩步,慢指標每次走一步。1.判斷鍊錶是否有環?如果快慢節點相遇,那麼鍊錶有環。2.如果有環,環的長度是多少?快慢指標相遇後,固定其中乙個指標 如快指標 不動,另乙...