資料結構和演算法之求兩個鍊錶相交的點

2021-09-29 15:16:15 字數 510 閱讀 6502

思路

對於兩個鍊錶相交於一節點,則在這個節點之後的所有結點都是兩個鍊錶所共有的

兩個鍊錶的最後乙個點的資料肯定是相同的

求出兩個鍊錶的長度,相減結果為k

利用雙指標,長的鍊錶的先走k個點,然後取迴圈判斷兩個鍊錶最後乙個點是否相同。

直接上**:

public

class

linklistcross

return count;

}public

static listnode point

(listnode list1,listnode list2)

// 先走diff步

while

(diff--!=0

)// 判斷相交

while

(true

) longl = longl.next;

shortl = shortl.next;

}}

資料結構之鍊錶相交問題

1.先各自求出鍊錶的長度。2.讓長的走長度差步。3.同時走第一次相遇的點就是交點。下面是 public class solution return len public listnode getintersectionnode listnode heada,listnode headb for in...

如何判斷兩個鍊錶相交

方法一 最笨的方法,遍歷鍊錶1,每遍歷乙個節點,判斷這個節點是否在鍊錶2中 for node1 in l1 for node2 in l2 if node1 node2 return true 時間複雜度比較高,o l1.length l2.length 方法二 萬能的hash,對於節點位址進行ha...

資料結構 判斷兩個鍊錶是否相交若相交求交點

單鏈表的實現 思路 兩個不帶環的鍊錶相交,則最後乙個結點一定相同。int checkcross plist list1,plist list2 while list2 next if list1 list2 else 思路 利用快慢指標,首先求出兩個鍊錶的長度差n 1,然後讓長的鍊錶先走n 1步。然...