面試題 02 08 環路檢測

2021-10-14 18:23:25 字數 713 閱讀 4821

給定乙個鍊錶,如果它是有環鏈表,實現乙個演算法返回環路的開頭節點。

如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。 為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意:pos 不作為引數進行傳遞,僅僅是為了標識鍊錶的實際情況。

方法:雜湊表

乙個非常直觀的思路是:我們遍歷鍊錶中的每個節點,並將它記錄下來;一旦遇到了此前遍歷過的節點,就可以判定鍊錶中存在環。借助雜湊表可以很方便地實現。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

visited.

insert

(head)

; head = head -

> next;

}return

nullptr;}

};

面試題 02 08 環路檢測

面試題 02.08.環路檢測 給定乙個鍊錶,如果它是有環鏈表,實現乙個演算法返回環路的開頭節點。有環鏈表的定義 在鍊錶中某個節點的next元素指向在它前面出現過的節點,則表明該鍊錶存在環路。示例1 輸入 head 3,2,0,4 pos 1 輸出 tail connects to node inde...

鍊錶 面試題 02 08 環路檢測 快慢指標

分析 如果鍊錶中有環,快慢指標肯定能相遇,這個非常容易證明,而且相遇肯定是在環中.快指標走的倍數是慢指標兩倍,這樣可以非常容易得出迴圈的開始結點 definition for singly linked list.struct listnode definition for singly linke...

2 8 環路檢測

template typename t singlylinkednode findloopfirst singlylinkednode head advance slow and fast pointers s s getnext f f getnext getnext if s f reset s...