編寫乙個程式,找到兩個單鏈表相交的起始節點。
例如,下面的兩個鍊錶:
a: a1 → a2在節點 c1 開始相交。↘c1 → c2 → c3
↗
b: b1 → b2 → b3
注意:
致謝:
特別感謝 @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 從各自的表頭開始...