輸入兩個鍊錶,找出它們的第乙個公共結點

2021-09-24 19:49:06 字數 1017 閱讀 4316

題目描述

輸入兩個鍊錶,找出它們的第乙個公共結點。

分析

關鍵:公共部分長度一樣的,讓不公共的部分同步往前走就可以了。也就是長的先走,走到剩餘鍊錶長度和另乙個鍊錶長度相同的地方,兩個鍊錶同步走。

class

solution

:def

findfirstcommonnode

(self, phead1, phead2)

: p, q = phead1, phead2

#統計兩個鍊錶的長度

length1, length2 =0,

0while p:

length1 +=

1 p = p.

next

while q:

length2 +=

1 q = q.

next

#print(length1, length2)

is_phead1_first =

(length1-length2)

>=

0#讓乙個鍊錶先走

step =

abs(length1-length2)

p, q = phead1, phead2

if is_phead1_first:

while step:

p = p.

next

step -=

1else

:while step:

q = q.

next

step -=

1#找公共結點

r =none

while p and q:

if p is q:

r = p

break

p = p.

next

q = q.

next

return r

輸入兩個鍊錶,找出它們的第乙個公共結點

問題 輸入兩個鍊錶,找出它們的第乙個公共結點。分析 第一反應是蠻力法,這是沒認真思考才想到的方法。仔細分析就會發現,這兩個鍊錶有著共同的尾部,在兩個煉表達到第乙個公共結點後,之後每個結點都是相同的,拓撲形狀呈現為y型結構。思路一 首先遍歷兩個鍊錶,得到兩個鍊錶的長度,並得到兩個鍊錶的長度差。然後進行...

輸入兩個鍊錶,找出它們的第乙個公共結點

解題思路 要找到相交結點,首先計算出兩個鍊錶的長度,先讓長的鍊錶走abs lena lenb 步,然後再同步進行遍歷,如果兩個結點相等則返回true否則為false。definition for singly linked list.struct listnode typedef struct li...

兩個單向鍊錶,找出它們的第乙個公共結點

package structure.list import structure.list.node.lnode 01 題目 兩個單向鍊錶,找出它們的第乙個公共結點 author toy public class first commonnode 逐個考察 o m n param head1 para...