JZ55 鍊錶中環的入口結點

2022-09-19 04:18:14 字數 991 閱讀 2343

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,返回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 ...