編寫乙個程式,找到兩個單鏈表相交的起始節點。

2021-09-25 15:11:08 字數 546 閱讀 6425

1.問題描述

有兩個鍊錶相交,找到相交的結點。

比如以上兩個鍊錶,相交的起始節點是c1

2.問題分析:

兩個鍊錶肯定有乙個長,乙個短,使用兩個引用,把兩個鍊錶的長度相減,假設長度為diff,讓長鍊錶的引用先走diff步,之後當長鍊錶的引用不等於短鍊表的引用時,兩個引用都各走一步,當它們第一次相等時,找到相交的結點,這時隨便返回乙個對這兩個鍊錶的引用。

**:

public class solution 

return len;

}public listnode getintersectionnode(listnode heada, listnode headb) else

for (int i = 0; i < diff; i++)

while (longer != shorter)

return shorter;}}

兩個單鏈表相交問題

關於兩個鍊錶相交,很容易遷移到好多地方,比如 1.找出兩個鍊錶相交的節點 2.判斷單個鍊錶是否有環等 3.二叉樹當存在父指標的時候,求樹中兩個節點的最近公共祖先 看乙個圖 一下只給出相當一部分思想 方法一 將兩個鍊錶的節點進行hash操作,然後判斷出節點,這種想法是可以的。方法二 當然採用暴力的方法...

找到兩個單鏈表相交的起始節點20201212

2.解法 鍊錶相加 1ms 41.4mb 編寫乙個程式,找到兩個單鏈表相交的起始節點。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅用 o 1 記憶體。相交的概念,不是兩條直線相交與乙個焦點 ...

找到兩個單鏈表相交的起始節點(乙個浪漫的解法)

編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。輸入 intersectval 8,lista 4 1,8 4,5 listb 5 0,1 8,4 5 skipa 2,skipb 3輸出 reference of the node with value 8輸入解...