編寫乙個程式,找到兩個單鏈表相交的起始節點。
例如,下面的兩個鍊錶:
a: a1 → a2
↘c1 → c2 → c3
↗
b: b1 → b2 → b3
在節點 c1 開始相交。
注意:
思路1:先使兩個鍊錶等長,然後一起遍歷兩個鍊錶 ,第乙個相等的即為所求的起始結點。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class solution
while(b->next!=null)
if(a != b) return null; //若a和b尾結點不一樣,則可直接判斷無相交結點。
a = heada;
b = headb;
//保證b鍊錶長於a鍊錶
if(n > m)
int i=0;
while(b!=null && n+i != m)//使a和b等長
while(a!=null && b!=null)
}};
Leetcode 相交鍊錶
leetcode 輸入 intersectval 2,lista 0,9,1,2,4 listb 3,2,4 skipa 3,skipb 1 輸出 reference of the node with value 2 輸入解釋 相交節點的值為 2 注意,如果兩個列表相交則不能為 0 從各自的表頭開始...
Leetcode相交鍊錶
public class listnode listnodes new hashset while heada null while headb null return null 寫點 哈哈,拿到題我想到用啥結構做呢?然後想著最近一直在用雜湊解決問題,這題用雜湊呢?可以,搞它!先把鍊錶a放到表裡,然...
LeetCode 相交鍊錶
先計算出兩個鍊錶的長度 o n 將長的乙個鍊錶的指示指標移動到和短鍊錶相同長度 o n 兩個鍊錶指示指標同時向前移動,直到二者相同或者null definition for singly linked list.struct listnode class solution while b next ...