NC66 兩個鍊錶中的第乙個公共結點

2022-07-07 21:24:11 字數 674 閱讀 5451

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

(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

tips:

首先我們要知道什麼是公共節點,兩個鍊錶從某一節點開始,他們的next都指向同乙個節點。但由於是單向鍊錶的節點,每個節點只有乙個next,因此從第乙個公共節點開始,之後他們的所有節點都是重合的,不可能再出現分叉。

#

class listnode:

#def __init__(self, x):

#self.val = x

#self.next = none##

#@param phead1 listnode類

#@param phead2 listnode類

#@return listnode類

#class

solution:

deffindfirstcommonnode(self , phead1 , phead2 ):

#write code here

a, b =phead1, phead2

while a!=b:

a=a.next if a else

phead2

b=b.next if b else

phead1

return a

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

假設兩個鍊錶公共長度為c,不公共的長度分別為a b。則兩個鍊錶長度分別為a c,b c。設兩個指標,讓第乙個鍊錶走完之後,跳到第二個鍊錶開始走,共a c x1距離 同理第二個鍊錶走完後調到第乙個鍊錶開始走,走b c x2距離。那麼兩個指標相遇時,由 a c x1 b c x2,距離不為負,得x1 b...

66 兩個鍊錶的第乙個公共結點

解題思路 定義2個指標p q。有公共節點的情況 不同部分為a,和b,公共部分為c 讓兩個指標一起走,p從a走到c就轉向b,q從b走到c轉向a,有a c b b c a,則p和q在公共節點相遇。沒有公共節點 p從a走到頭就轉向b q從b走到頭轉向a。a b b a,p和q會在空節點相遇。其中listn...

兩個鍊錶第乙個公共節點

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