力扣160題之 相交鍊錶

2021-10-21 14:39:23 字數 813 閱讀 7567

分別計算a和b兩個鍊錶的長度len1和len2,讓長的那個鍊錶先走(len1-len2)步,此時兩個鍊錶是處於同步的狀態,接下來讓兩個鍊錶同時走,當找到的第乙個節點則為該鍊錶的交點

//思路:1.先遍歷兩個鍊錶,取得len1和len2

//2.讓較長的鍊錶先向後移動len1-len2個長度

//3.兩個鍊錶同時走,直到相交的時候

public

intgetlenth

(listnode head)

return len;

}int len1 =

getlenth

(heada)

;int len2 =

getlenth

(headb)

;

讓較長的鍊錶先移動指定長度是為了得到兩個長度相同的鍊錶從而可以更方便的對兩個鍊錶的比較

if

(len1>len2)

}else

}

while

(heada != null && headb!=null)

heada = heada.next;

headb = headb.next;

}return null;

迴圈條件不是判斷節點的值而是節點物件的身份,所以要一直迴圈下去,直到找到兩個鍊錶的交點。如果到最後鍊錶為空的時候跳出迴圈,則說明兩個鍊錶不相交。

力扣第160題相交鍊錶

160.相交鍊錶 難度 簡單 標籤 鍊錶,雙指標 思路 兩個鍊錶有交點.兩個鍊錶的長度可能不一樣,但兩個鍊錶有相同的部分,不同的部分只是交點之前的結點,我們只需要讓兩個鍊錶同時走,當乙個鍊錶走到頭的時候,就接著讓他走另一條鍊錶的路,當他們相遇時,就是交點,因為他們走的長度都是他們自身長度加對方結點之...

力扣 160 相交鍊錶

一 題目描述 編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node wi...

力扣 160 相交鍊錶

寫乙個程式,找到兩個單鏈表相交的起始節點 該題目來自力扣題庫 示例 在節點 c1 開始相交 示例1 輸出 reference of the node with value 8 相交節點的值為 8 注意,如果兩個列表相交則不能為 0 從各自的表頭開始算起,鍊錶 a 為 4,1,8,4,5 鍊錶 b 為...