LeetCode中級演算法 相交鍊錶

2021-08-27 05:38:29 字數 855 閱讀 7945

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

例如,下面的兩個鍊錶

a:          a1 → a2

↘c1 → c2 → c3

b: b1 → b2 → b3

在節點 c1 開始相交。

注意:

致謝:

特別感謝 @stellari 新增此問題並建立所有測試用例。

解法1:找到兩鍊錶長度之差,較長的一方則移動差值,之後在進行比較

只能解兩鍊錶後置相同的情況

比如說:a鍊錶長度為3   b鍊錶長度為10        相同部分為a鍊錶的1-3,b鍊錶的2-4 

這種情況此解法就無法比較

public class solution 

while (headb!=null)

int n=0;

if(alen>blen)

}else if(blen>alen)

}while (tempa!=null)else

}return null;

}}

解法2:逐個比較,但是在平台上跑的時候會出現超時

public listnode getintersectionnode(listnode heada, listnode headb) 

while (heada != null) else

}else

}heada = heada.next;

}return null;

}

中級演算法 9 相交鍊錶

題目 編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度...

LeetCode 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3在節點 c1 開始相交。注意 思路1 先使兩個鍊錶等長,然後一起遍歷兩個鍊錶 第乙個相等的即為所求的起始結點。definition for singly linked list.s...

Leetcode 相交鍊錶

leetcode 輸入 intersectval 2,lista 0,9,1,2,4 listb 3,2,4 skipa 3,skipb 1 輸出 reference of the node with value 2 輸入解釋 相交節點的值為 2 注意,如果兩個列表相交則不能為 0 從各自的表頭開始...