牛客: 兩個鍊錶的第乙個公共節點
分別求兩個單鏈表的長度,len1 和 len2,計算長度差 len
然後讓長的鍊錶先走 len 步,此時p1 和 p2 鍊錶剩餘長度相同
p1 和 p2 同時走,直到 p1 == p2 ,若有共同節點,p1 != null,否則 p1 為 null
public
class
solution
else
// 同時走
while
(phead1 != phead2)
// 有共同節點,phead1 != null, 否則 phead1 == null
return phead1;
}// 計算鍊錶長度
public
intgetlen
(listnode p)
return len;
}// 長的鍊錶先走 len 步
public listnode go
(listnode p,
int len)
return p;
}}
p1 和 p2 同時走
p1 走完接著 p2 頭部走,同理 p2 走完接著 p1 頭部走
直到 p1 == p2,若有共同點,p1 != null(中間停止),否則 p1 為 null (走到尾部)
public listnode findfirstcommonnode
(listnode phead1, listnode phead2)
return p1;
}
兩個鍊錶求第乙個公共交點
輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 definition for singly linked list.class listnode public class solution listnode meetno...
兩個鍊錶第乙個公共節點
先讓長的鍊錶的指標先走長的之差的步數,兩個再一起走,如果相遇就是第乙個公共節點 如果沒交點,就都走到空 struct listnode class solution while pl2 null 復位指標到頭節點 pl1 phead1 pl2 phead2 int dif len 0 if len1...
鍊錶問題 兩個鍊錶的第乙個公共節點
題目 輸入兩個鍊錶,找出它們的第乙個公共結點 分析 對於這個問題有三種思路 1 蠻力演算法,當遍歷到乙個節點時,就在另外乙個鍊錶上順序遍歷,並且判斷是否相等,如果想等就是第乙個重合的節點,對於兩個長度分別為m和n的鍊錶,所需要的時間為o m n 實現如下 struct listnode 蠻力解法 l...