給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,返回null。
輸入分為2段,第一段是入環前的鍊錶部分,第二段是鍊錶環的部分,後台將這2個會組裝成乙個有環或者無環單鏈表
返回鍊錶的環的入口結點即可。而我們後台程式會列印這個節點
輸入:,
返回值:3
說明:返回環形鍊錶入口節點,我們後台會列印該環形鍊錶入口節點,即3
輸入:,{}
返回值:"null"
說明:沒有環,返回null,後台列印"null"
輸入:{},
返回值:2
說明:只有環形鍊錶節點2,返回節點2,後台列印2
1.遍歷鍊錶,使用hashset儲存,如果在新增某個結點失敗,說明該結點是環的入口。
2.快慢指標。快慢指標先指向頭節點,然後快指標每次走兩步,慢指標每次走一步,這樣他倆一定會在環中的某一結點相遇。相遇後,慢指標不動,快指標指向頭結點,此時慢指標和快指標距離環入口結點的距離相等,所以讓快慢指標同時前進一步直到他們再次相遇,此時相遇的結點就是入口節點。
public
listnode
entrynodeofloop
(listnode phead)
phead = phead.next;
}return phead;
}
public
listnode
entrynodeofloop
(listnode phead)
while
(fast != slow)
; fast = phead;
while
(fast != slow)
return fast;
}
JZ55 鍊錶中環的入口結點
給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。解法 1.雜湊法 unordered set可以把它想象成乙個集合,它提供了幾個函式讓我們可以增刪查 unordered set insert unordered set erase unordered set find cl...
JZ55 鍊錶中環的入口結點
題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。題解 1 設定乙個快指標,乙個慢指標。2 快指標一次走兩步,慢指標一次走一步。如果是迴圈鍊錶,那麼兩指標終會相遇。3 相遇後,重新指定乙個指標從煉表頭開始走,另乙個指標從相遇點開始走,再次相遇的點就是入環點。publ...
55 鍊錶中環的入口結點
乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路一 使用乙個集合unordered set來儲存已經訪問過的結點,當第一次訪問到已經被訪問過的結點時,即為環的入口結點,此方法需要額外的空間進行輔助。一 struct listnode class solution else phead phead ...