輸入兩個鍊錶,找出它們的第乙個公共結點。
(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)
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...