【題目描述】
Given a linked list, return the node where the cycle begins.
If there is no cycle, returnnull.
給定一個鏈表,如果鏈表中存在環(huán)页藻,則返回到鏈表中環(huán)的起始節(jié)點的值徽缚,如果沒有環(huán),返回null元镀。
【題目鏈接】
www.lintcode.com/en/problem/linked-list-cycle-ii/
【題目解析】
此題不僅要求判斷是否存在環(huán)沧踏,同時還需要在存在環(huán)的情況下找出環(huán)的起始節(jié)點步悠。這就比I要難一些脆淹。最開始我想到的方法還是跟上題類似常空,一個fast ,每次移動兩步盖溺,一個slow漓糙,每次移動一步。兩個指針不僅要向前移動烘嘱,同時還需要記錄各自走的步數(shù)(fastCount和slowCount)盾饮。當(dāng)相遇的時候丸卷,fastCount減去slowCount就是換的長度(假設(shè)這個長度的len)。這個時候讓fast和slow重新指向head節(jié)點。然后先讓fast指針向前移動len步首昔。之后fast和slow再同時移動,兩個每次均移動一步圈暗。當(dāng)兩者相遇的時候就是環(huán)的其實節(jié)點泽铛。
【參考答案】