一:題目描述
二:題目解答
解法一:鍊錶長度分析
我們求乙個相交鍊錶,就要找出相交鍊錶有什麼特徵。我們要求相交點,首先要明確的一點就是,這個點有什麼特殊的。我們分析發現,相交點後面的都是兩條鍊錶共有的,也就是相交點後面都是一樣的,這當然也包括長度。那麼兩條相交鍊錶不同的長度就只有相交之前的了。我們可以首先把兩條鍊錶指向的長度變成一樣長,然後再一起移動指標,當指向的節點相等時,就是第乙個相交點。(若沒有相交點,則最後指向的相等的節點為null,也可直接返回)。
public class solution
while(lengthb>lengtha)
while(tmpa!=tmpb)
return tmpa;
}public int getlength(listnode head)
return length;}}
解法二:指標追逐
我們在判斷乙個單鏈表是否有環的時候運用了快慢指標的方法,這也是一種指標追逐的方法。但是它是由於存在環快慢指標就肯定會相遇。那麼對於我們這道題來說,我們怎麼樣讓指標一直在動而不是移動到結尾就結束呢。經過分析,當乙個指標移動到結尾時,那麼我們就把它重置到另乙個鍊錶的開頭。
public class solution
return tmpa;}}
LeetCode160 相交鍊錶
編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅用 o 1 記憶體。解題思路 1.找到兩個鍊錶長度差n後...
Leetcode160 相交鍊錶
解法一 用乙個集合去判斷 class solution sets listnode tmp1 heada listnode tmp2 headb while tmp1 while tmp2 tmp2 tmp2 next return nullptr 解法二 先遍歷一遍兩個鍊錶得到的長度差n,然後讓長...
LeetCode 160 相交鍊錶
編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅...