給定乙個鍊錶,如果它是有環鏈表,實現乙個演算法返回環路的開頭節點。
如果鍊錶中有某個節點,可以通過連續跟蹤 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...