鍊錶帶環和相交的問題

2021-08-03 20:44:14 字數 1265 閱讀 9272

判斷兩個鍊錶是否相交?(不帶環)

(1)第一種方法:我們只需要遍歷每條鍊錶,把最後乙個節點儲存起來,然後判斷這兩條鍊錶的最後乙個節點是否相等,如果是一樣的節點,那麼這兩個節點就一定相交。

(2)第二種方法:遍歷兩條鍊錶,求出鍊錶l1的鍊錶長度為len1,鍊錶l2的鍊錶長度為len2,長度差為| len1 - len2 |,讓長的鍊錶先走長度差步,然後兩個鍊錶在從當前位置開始走,如果遇到第乙個相同的節點,那麼就證明兩條鍊錶相交。

這種方法也是求不帶環相交,求相遇點的情況。

判斷兩個鍊錶是否相交?(帶環)

鍊錶帶環相交一定是乙個鍊錶帶環,乙個鍊錶不帶環才有可能相交,下面是兩種鍊錶帶環相交的情況。

要求鍊錶相交求相遇點的情況,我們必須要知道如何判斷鍊錶是否帶環,環入口點的問題

(1)判斷鍊錶是否帶環?

(2)乙個指標走一步,乙個指標走三步,可不可以,四步五步呢?

(3)求環的入口點?

鍊錶帶環相交點求解

(1)先判斷鍊錶是否相交

(2)求鍊錶相交的相遇點

a.鍊錶環外相交的情況,只有乙個相交點。

b.鍊錶環內相交的情況下,有兩個相交點。

上圖已經求出了兩個鍊錶各自在環中相遇的位置,每個鍊錶單獨來看,每個鍊錶都根據求環的入口點在求出兩個節點,如果這兩個節點相同,那麼就可以肯定這個鍊錶是環外相交的情況,把這個節點當成兩個鍊錶不帶環相交的最後乙個節點,然後用最上面兩張**的方法求出相交點。如果這兩個節點不相同,那麼就可以判斷這兩個鍊錶是在環內相交,那麼這兩個節點都是兩個鍊錶的相交節點。

鍊錶帶環問題

1 判斷鍊錶是否帶環 基本思路 定義兩個指標,乙個快指標,乙個慢指標,快指標一次走兩步,慢指標一次走一步,當兩個指標重合的時候,說明該鍊錶是帶環的,當快指標為空或者快指標的下乙個節點為空,說明是不帶環的。實現 definition of listnode class listnode class s...

鍊錶帶環或不帶環的幾個經典問題

1.給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。2.求不帶環相交鍊錶起始節點 public class solution return h1 3.求帶環單鏈表的環的長度快慢指標從第一次相遇開始進行累加直到第二次相遇跳出迴圈 public static intlengt...

關於相交鍊錶 帶環鍊錶 鍊錶深拷貝的思路整理

返回相交鍊錶的交點 1.先求出兩個鍊錶的各自長度 2.讓長的先走他們的 長度差 步 3.然後兩者同時走,第一次相遇就是交點 返回該結點 判斷鍊錶是否帶環 1.快慢指標 快的走兩步,慢的走一步,不能乙個一步,乙個n步 n 2 可能會錯過 2.如果兩個指標相遇,則鍊錶帶環 如果快的遇到null,則不帶環...