面試題02 07鍊錶相交

2021-10-07 22:22:48 字數 2494 閱讀 8891

1.暴力求解

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

(object):

defgetintersectionnode

(self, heada, headb)

:"""

:type head1, head1: listnode

:rtype: listnode

"""if heada==

none

or headb==

none

:return

none

n1=heada

while

(n1)

: n2=headb

while

(n2):if

(n1==n2)

:return n1

n2=n2.

next

n1=n1.

next

return

none

超出了時間限制,fine

2.雙指標法

相當於n1和n2先走到各自的尾部(第一階段),然後從對方的頭部繼續(第二階段),如果這兩個鍊錶是相交的,那麼他們一定會在第二階段於交點處相遇,畫個圖能理解。

if heada==

none

or headb==

none

:return

none

n1=heada

n2=headb

while

(n1!=n2):if

(n1)

: n1=n1.

next

else

: n1=headb

if(n2)

: n2=n2.

next

else

: n2=heada

return n1

3.消除長度

先求出兩個鍊錶的長度,然後從頭開始,先是長的那個鍊錶從頭部向後走,短的還是在頭部,直到它們剩下的長度相同,這個時候就一起開始走,如果兩個鍊錶相交,那麼他們一定會同時到達交點處。

if heada==

none

or headb==

none

:return

none

n1=heada

n2=headb

if(n1==n2)

:return n1

length1=

0 length2=

0while

(n1)

: length1+=

1 n1=n1.

next

while

(n2)

: length2+=

1 n2=n2.

next

n1=heada

n2=headb

while

(length1>length2)

: n1=n1.

next

length1-=

1while

(length1: n2=n2.

next

length2-=

1while

(n1 and n2):if

(n1==n2)

:return n1

n1=n1.

next

n2=n2.

next

4.集合

把a或b的指標全部放在乙個集合,遍歷另外乙個鍊錶,如果某個指標在集合中,那麼他們從這個指標之後就是相交的。

if heada==

none

or headb==

none

:return

none

n1=heada

n2=headb

if(n1==n2)

:return n1

set1=

set(

)while

(n1)

: set1.add(n1)

n1=n1.

next

while

(n2):if

(n2 in set1)

:return n2

n2=n2.

next

關於python的集合操作,在

面試題02 07 鍊錶相交

題目大概練過leetcode的鍊錶部分估計都做過這道題 示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3輸出 reference of the node with value 8輸入解釋 相交節點的值為 ...

面試題 02 07 鍊錶相交

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

leetcode 面試題 02 07 鍊錶相交

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