劍指Offer 兩個鍊錶的第乙個公共結點

2021-10-04 11:24:01 字數 1430 閱讀 6662

樣例

給出兩個鍊錶如下所示:

a: a1 → a2

↘c1 → c2 → c3

b: b1 → b2 → b3

輸出第乙個公共節點c1

先計算出兩個鍊錶的長度,可以讓比較長的先走兩個鍊錶長度之差的步數,兩個再一起走。

時空分析

時間複雜度:時間複雜度o(n+m)

c++ **

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

while

(headb_-

>next)

int delta = lena - lenb;

if(delta <0)

}else

}while

(heada)

return

nullptr;}

};

不同部分為ab,公共部分為ca + c + b=b + c + a;讓兩個一起走,a走到頭就轉向bb走到頭轉向a,則在公共部分相遇

這種方法適用於確定存在公共節點,若不存在公共節點就會死迴圈出不來

時空分析

時間複雜度:時間複雜符o(n)

c++ **

/*

struct listnode

};*/

class

solution

return p;}}

;

用乙個雜湊表記下訪問過的指標

時空分析

時間複雜度:時間複雜度o(n+m)

c++ **

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

h = headb;

while

(h!=

null

)return

null;}

};

劍指offer 兩個鍊錶第乙個公共結點

題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點。解題思路 用兩重迴圈,對第乙個鍊錶的每乙個結點都進行第二個鍊錶所有結點的遍歷,若發現結點相等,則將結點返回 public listnode findfirstcommonnode listnode phead1,listnode phead2 phe...

劍指offer 兩個鍊錶的第乙個公共結點(鍊錶)

輸入兩個鍊錶,找出它們的第乙個公共結點。公共節點指的是節點的指標相同 節點本身相同 而不是節點的內容相同。如果考慮暴力的方法,對於鍊錶1的每個元素,去遍歷鍊錶2,找出第乙個公共節點,這樣時間複雜度為o mn 計算開銷大 m,n分別為兩個鍊錶的長度 考慮具有公共節點的鍊錶的特徵 如果兩個鍊錶有公共節點...

劍指offer 兩個鍊錶的第乙個公共節點

題目延伸 程式設計之美中的求兩個節點是否相交 將兩個節點串在一起,若有節點,串在一起的節點就會出現環,利用一二不長不等,兩個節點在環中必然相遇。本題描述 輸入兩個鍊錶,找出它們的第乙個公共結點。分析 乙個簡單的方法是 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾...