52 兩個鍊錶的第乙個公共節點

2022-04-29 09:33:06 字數 689 閱讀 7707

題目:輸入兩個鍊錶,找出它們的第乙個公共節點。

def first_common_node(head1,head2):

p1,p2 = head1,head2

cnt1,cnt2=0,0

while p1:

cnt1 +=1

p1=p1.next

while p2:

cnt2 +=1

p2=p2.next

p1, p2 = head1, head2

if cnt1>cnt2:

for i in range(cnt1-cnt2):

p1=p1.next

if cnt2>cnt1:

for i in range(cnt2-cnt1):

p2=p2.next

while p1.data!=p2.data:

p1=p1.next

p2=p2.next

return p1

注:要找出兩個鍊錶第乙個公共節點,只要讓兩個鍊錶在各自某個節點之後長度一致,然後一起往後遍歷,當遇到兩個節點相同時,即為第乙個公共節點。所以首先算出兩個鍊錶的長度,然後讓長的鍊錶先走,使其剩餘長度等於另乙個鍊錶,然後一起遍歷即可。

第二種方法為用兩個棧儲存兩個鍊錶,然後兩個棧做彈出操作,判斷兩個棧彈出的節點是否相同,最後乙個相同的節點為兩個鍊錶第乙個公共節點。

52 兩個鍊錶的第乙個公共節點

題目描述 輸入兩個鍊錶,找出它們的第乙個公共節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 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 v...

鍊錶 52題 兩個鍊錶的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例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...

兩個鍊錶第乙個公共節點

先讓長的鍊錶的指標先走長的之差的步數,兩個再一起走,如果相遇就是第乙個公共節點 如果沒交點,就都走到空 struct listnode class solution while pl2 null 復位指標到頭節點 pl1 phead1 pl2 phead2 int dif len 0 if len1...