劍指offer JZ55鍊錶中環的入口結點

2021-10-08 16:18:18 字數 589 閱讀 8069

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32m,其他語言64m

熱度指數:355664

本題知識點: 鍊錶

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。

/*function listnode(x)*/

function

entrynodeofloop

(phead)

let slow = phead.next;

let fast = phead.next.next;

while

(slow != fast)

let head = phead;

while

(head != fast)

return head;

}

分析:

使用快慢指標,如果鍊錶中有環,則快慢指標終會相遇,如果沒有相遇則返回null。當快慢指標相遇時,鍊錶的起點head至入口結點的距離和入口結點至相遇點的距離一樣,讓起點head的指標與相遇點的指標一步一步往後走,二者會在入口結點相遇。

劍指offer JZ55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。這也是一道簡單的鍊錶題,主要的想法就是將已經出現的鍊錶結點放入乙個hash表中,如果出現了和之前重複的結點,則輸出 class solution def entrynodeofloop self,phead write cod...

劍指 Offer JZ55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。設定快慢指標,都從煉表頭出發,快指標每次走兩步,慢指標一次走一步,假如有環,一定相遇於環中某點 結論1 接著讓兩個指標分別從相遇點和煉表頭出發,兩者都改為每次走一步,最終相遇於環入口 結論2 struct listnode c...

劍指offer 55 鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。第一步,找環中相匯點。分別用p1,p2指向鍊錶頭部,p1每次走一步,p2每次走二步,直到p1 p2找到在環中的相匯點。第二步,找環的入口。接上步,當p1 p2時,p2所經過節點數為2x,p1所經過節點數為x,設環中有n個節點,...