LeetCode 鍊錶 相交鍊錶

2021-10-05 06:18:31 字數 2087 閱讀 2525

語言:python

難度:簡單

描述:找到兩個單鏈表的重合鏈。比如:

node_a = [4,1,8,4,5]; node_b = [5,0,1,8,4,5],則這兩個鍊錶的起始節點為8,重合鏈為[8,4,5]。

node_a = [4,1,7,2,1]; node_b = [5,0,1,8,4,5],則這兩個鍊錶的起始節點為null,不存在。

將其中乙個node_a鍊錶的所有子鍊錶儲存到set_a中;

遍歷node_b,判斷其node.next是否存在於set_a中,如果有則直接返回node.next,否則則遍歷結束返回none。

code:

class

solution

:def

getintersectionnode

(self, heada: listnode, headb: listnode)

-> listnode:

a =set(

) cur1 = heada

cur2 = headb

while cur1:

a.add(cur1)

cur1 = cur1.

next

while cur2:

if cur2 in a:

return cur2

cur2 = cur2.

next

return

none

分別遍歷兩個鍊錶,得到兩個鍊錶的長度差距;

讓長的先做node.next,使得它們倆等長;

同時遍歷兩個鍊錶,直到子鏈相同則停止遍歷。

code:

class

solution

:def

getintersectionnode

(self, heada: listnode, headb: listnode)

-> listnode:

cur1 = heada

cur2 = headb

n =0# 1

while cur1:

n +=

1 cur1 = cur1.

next

while cur2:

n -=

1 cur2 = cur2.

next

if cur1 != cur2:

return

none

cur1 = heada if n >

0else headb

cur2 = headb if cur1 == heada else heada

n =abs(n)

# 2while n:

n -=

1 cur1 = cur1.

next

# 3while cur1 != cur2:

cur1 = cur1.

next

cur2 = cur2.

next

return cur1

return

none

同時遍歷兩個鍊錶;(假設長度分別為m,n,相交節點之後的長度為k)

當短的鍊錶到達尾節點的時候n,開始遍歷長鍊表m;

當長的鍊錶到達尾節點的時候m,開始遍歷短鍊表n;(此時兩個鍊錶的遍歷長度將相同)

繼續遍歷,直到出現相同子鏈。(n+m-k與m+n-k處相交,k=0時則為null)

class

solution

:def

getintersectionnode

(self, heada: listnode, headb: listnode)

-> listnode:

cur1 = heada

cur2 = headb

while cur1 != cur2:

cur1 = cur1.

next

if cur1 else headb

cur2 = cur2.

next

if cur2 else heada

return cur1

Leetcode(鍊錶)相交鍊錶 c

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

鍊錶 相交鍊錶(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 ...

演算法 鍊錶 鍊錶相交

給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0...