lintcode 兩個鍊錶的交叉

2021-09-11 03:33:35 字數 645 閱讀 1898

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。

如果兩個鍊錶沒有交叉,返回null。

在返回結果後,兩個鍊錶仍須保持原有的結構。

可假定整個鍊錶結構中沒有迴圈。

下列兩個鍊錶:

a:                   a1 → a2

↘c1 → c2 → c3

↗b: b1 → b2 → b3

在節點 c1 開始交叉。

需滿足 o(n) 時間複雜度,且僅用 o(1) 記憶體。

先分別遍歷一次鍊錶,得到2個鍊錶的長度,然後差值delt就是交叉之前的差值,只要讓長一點的先走delt,最後一起走,相遇時就是入口

/**

* definition of singly-linked-list:

* class listnode

* }*/class solution

while (pb)

int delt = abs(na-nb);

if (na < nb)

while (pa != pb)

return pa;

}else

while (pa != pb)

return pa;}}

};

LintCode 380 兩個鍊錶的交叉

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。注意事項 樣例 下列兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3在節點 c1 開始交叉。思路 1.鍊錶1從頭節點開始,走到最後乙個節點 不是結束 統計鍊錶1的長度記為len1,同時一記錄鍊錶1的最後乙個節點記為cura 2.鍊錶2從頭...

lintcode練習 380 兩個鍊錶的交叉

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。下列兩個鍊錶 a a1 a2 c1 c2 c3 b b1 b2 b3在節點 c1 開始交叉。需滿足 o n 時間複雜度,且僅用 o 1 記憶體。第一步 得到a,b的長度,和a,b的最後乙個節點enda,endb 第二步 對enda,endb進行判斷,如果...

lintcode 380 兩個鍊錶的交叉

請寫乙個程式,找到兩個單鏈表最開始的交叉節點。樣例 樣例 1 輸入 a a1 a2 c1 c2 c3 b b1 b2 b3 輸出 c1 解釋 在節點 c1 開始交叉。樣例 2 輸入 intersected at 61 2 3 4 5 6 7 8 9 10 11 12 13 null6 7 8 9 1...