鍊錶 兩個鍊錶的交叉 中等

2021-08-21 12:18:04 字數 606 閱讀 7617

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。

您在真實的面試中是否遇到過這個題?  是

下列兩個鍊錶:

a:          a1 → a2

↘c1 → c2 → c3

b: b1 → b2 → b3

在節點 c1 開始交叉。

需滿足 o(n) 時間複雜度,且僅用 o(1) 記憶體。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

cur = headb;

while(cur)

//讓長度長的鍊錶先走|lena - lenb|步

if(lena > lenb)

}else if(lena < lenb)

}//返回相交的節點,沒有則返回空

while(heada != null && headb != null)

return null;

}};

兩個鍊錶的交叉

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。注意事項 樣例下列兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3在節點 c1 開始交叉。需滿足 o n 時間複雜度,且僅用 o 1 記憶體。這裡主要有兩個思路 方法一 對於僅判斷相交不相交的話 判斷最後乙個節點是否相同的辦法並不慢,如果...

lintcode 兩個鍊錶的交叉

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。如果兩個鍊錶沒有交叉,返回null。在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。下列兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3 在節點 c1 開始交叉。需滿足 o n 時間複雜度,且僅用 o 1 記憶體。...

求兩個交叉鍊錶的交點

如果兩個鍊錶相交,又都不存在環,那麼從第乙個相交點開始之後的結點都相同 構成了乙個y型 因此,只要分別遍歷這兩個鍊錶,找到末尾結點,如果末尾結點相同,即可確認相交。如果要求這種情況的交點,由於相交部分全部都相同,所以彼此的長度差異存在於相交之前的部分。因此,只需要先得到兩個鍊錶的差d,然後將較長的鍊...