Leetcode 判斷有環鏈表的環長度 2

2021-09-25 08:19:00 字數 671 閱讀 2708

思路: 當兩個指標相遇,證明鍊錶有環的時候,讓兩個指標從相遇點繼續迴圈前進,並統計前進的迴圈次數,直到兩個指標第2次相遇,此時,統計出來的前進次數就是環數。

思考一下:假設兩指標分為為p1,p2,則指標p2每次比p1多走一步,兩者的速度差為1步,當兩個指標再次相遇,p2比p1多走了1圈,因此 環長 = 每一次速度差 x 前進次數 = 前進次數

一下**有兩種,分別是本人自己解法和網上的解法:

/**

* 判斷環的長度: 自己解法

* * @param node

* @return

*/public static integer cyclelength(node node)

if (meetcount.equals(first_meet))

if (meetcount.equals(second_meet))

}return length;

}/**

* 判斷環的長度:網上版本

* @param node

* @return

*/public static integer cyclelength1(node node) }}

}return 0;

}public static void main(string args)

有環鏈表交點判斷

今天要講的和那篇類似,就是給定兩個鍊錶,如何來判斷這兩個鍊錶相交了 首先應該分兩種情況考慮,第一 這兩個鍊錶本身都沒有環。第二 這兩個鍊錶本身都有環 首先講都沒有環的情況,如下圖 方法很多,不過我想最簡單的方法是遍歷第乙個鍊錶,然後遍歷到最後乙個節點時候,用乙個指標把節點位址記錄下來 然後再來遍歷第...

判斷單鏈表是否有環

1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...

判斷單鏈表是否有環

鍊錶結構 struct list 1 判斷單鏈表是否有環 採用追趕法,設定兩個指標p和q,從煉表表頭開始,p每一步走兩個節點,q每一步走乙個節點,如果鍊錶有環則p和q必相遇。如下 判斷鍊錶是否有環,時間複雜度o n 空間複雜度o 1 list hasloopinlist list head else...