Leetcode相交鍊錶 160

2021-10-24 05:55:50 字數 715 閱讀 5793

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

如果鍊錶相交,那麼相交節點的位址是一樣的。

public

class

solution

while

(head2 != null)

else

}return null;

//沒有相交節點,返回null

}}

這種方法的時間複雜度為o(m+n),空間複雜度為o(n)或o(m)。

這個方法利用的是數學知識。使用乙個指標從鍊錶a的頭部開始遍歷整個鍊錶a,然後從鍊錶b的頭部開始繼續遍歷,同樣的使用另外乙個指標從鍊錶b的頭部開始遍歷,遍歷完b以後從鍊錶a的頭部開始遍歷,如果鍊錶a和b相交的話,那麼它們會在相交的節點相遇,此時對於從鍊錶a開始遍歷的指標有b+c+a,對於從鍊錶b開始遍歷的指標有a+c+b,可以看到兩個指標遍歷過的節點數是一樣的。

//返回相交節點

}}這種方法的時間複雜度為o((a+b+c)*2),空間複雜度為o(1)。

鍊錶 相交鍊錶(leetcode 160

若相交,鍊錶a a c,鍊錶b b c.a c b b c a 則會在公共處c起點相遇。若不相交,a b b a 因此相遇處是null 用一句歌詞總結 走過你來時的路 public listnode getintersectionnode listnode heada,listnode headb ...

leetcode 鍊錶 160 相交鍊錶

leetcode鍊錶專題 160 相交鍊錶 輸入兩個鍊錶,找出它們的第乙個公共節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference o...

Leetcode鍊錶 160 相交鍊錶

題目 編寫乙個程式,找到兩個單鏈表相交的起始節點。easy 例如以下示例中 a 和 b 兩個鍊錶相交於 c1 a a1 a2 c1 c2 c3 b b1 b2 b3但是因為單鏈表的每個節點只有乙個next指標,即只能有乙個後繼結點。而不會出現下圖結點c有兩個後繼結點。即只要兩個單鏈表相交,必會出現交...