Leetcode 160 相交鍊錶

2021-10-06 16:46:53 字數 1306 閱讀 6155

筆者以c++方式解決。

#include

"iostream"

using namespace std;

#include

"algorithm"

#include

"vector"

#include

"queue"

#include

"set"

#include

"map"

#include

"string"

#include

"stack"

/** * definition for singly-linked list.

* struct listnode

* };

*/struct listnode };

class solution

// 將鍊錶 heada 的所有節點儲存到 dp 陣列中

while

(heada !=

null

)// 將鍊錶 headb 的所有節點儲存到 dp2 陣列中

while

(headb !=

null

)// 從陣列的末尾開始比較

int i = dp.

size()

-1;int j = dp2.

size()

-1;// 如果最後乙個節點不相等,直接返回 null

if(dp[i]

!= dp2[j]

)// 如果陣列的末尾值相等,在向左移動,不斷遍歷

i--; j--

;// 節點值相等,不斷向左移動,不斷遍歷

while

(i >=

0&& j >=

0&& dp[i]

== dp2[j]

)// 返回相交節點

return dp[i +1]

;}};

intmain()

執行結果

有點菜,有時間再優化一下。

難得有時間刷一波leetcode, 這次做乙個系統的記錄,等以後複習的時候可以有章可循,同時也期待各位讀者給出的建議。演算法真的是乙個照妖鏡,原來感覺自己也還行吧,但是演算法分分鐘教你做人。前人栽樹,後人乘涼。在學習演算法的過程中,看了前輩的成果,受益匪淺。

感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!

LeetCode160 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅用 o 1 記憶體。解題思路 1.找到兩個鍊錶長度差n後...

Leetcode160 相交鍊錶

解法一 用乙個集合去判斷 class solution sets listnode tmp1 heada listnode tmp2 headb while tmp1 while tmp2 tmp2 tmp2 next return nullptr 解法二 先遍歷一遍兩個鍊錶得到的長度差n,然後讓長...

LeetCode 160 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。例如,下面的兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3 在節點 c1 開始相交。注意 如果兩個鍊錶沒有交點,返回 null.在返回結果後,兩個鍊錶仍須保持原有的結構。可假定整個鍊錶結構中沒有迴圈。程式盡量滿足 o n 時間複雜度,且僅...