【数据结构与算法】带环单链表查找环的入口算法
生活随笔
收集整理的這篇文章主要介紹了
【数据结构与算法】带环单链表查找环的入口算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
帶環(huán)單鏈表的故事
@不了解前塵往事的Reader,煩請閱讀——《判斷單鏈表是否有環(huán)的算法》
如何找?guī)Лh(huán)單鏈表的環(huán)的入口
這里只說比較可行的算法吧。
思路一:HashSet第一個重復(fù)元素就是環(huán)的入口
按照查找單鏈表帶環(huán)的思路二,我們用一個HashSet維護已經(jīng)跑過的元素,當(dāng)重復(fù)的時候,那個結(jié)點就是環(huán)的入口。這法子還算好使,不過還是老問題——空間復(fù)雜度大。
思路二:再開一個指針與當(dāng)前指針相會
我們當(dāng)前雙指針停在交匯處,這里有一個位置。
思來想去我還是給大家畫個圖吧:
有兩個畫錯的地方:就是其實l1應(yīng)該由node4畫到node7,再就是node6上的線應(yīng)該把焦點改到node7。
大家也讀過上面的文章應(yīng)該也知道我的測試數(shù)據(jù)是:
node1 → node2 → node3 → node4 → node5 → node6 → node7 → node8 → node9 → node4。
總結(jié)
以上是生活随笔為你收集整理的【数据结构与算法】带环单链表查找环的入口算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构与算法】二叉堆与二叉搜索树的区
- 下一篇: 使用 Warshall(沃舍尔)算法求解