關於相交鍊錶 帶環鍊錶 鍊錶深拷貝的思路整理

2021-09-27 04:51:28 字數 442 閱讀 6488

返回相交鍊錶的交點:1.先求出兩個鍊錶的各自長度

2.讓長的先走他們的(長度差)步

3.然後兩者同時走,第一次相遇就是交點(返回該結點)

判斷鍊錶是否帶環:1.快慢指標(快的走兩步,慢的走一步,不能乙個一步,乙個n步(n>2),可能會錯過)

2.如果兩個指標相遇,則鍊錶帶環;如果快的遇到null,則不帶環(直線形)

求入環點:

1).轉化為相交問題(求取相遇結點)

2).乙個從起點,乙個從交點,都每次走一步,第一次相遇點為入環點

相交+帶環(六種情況)

複雜鍊錶的複製

1)簡單複製無法解決(因為是淺拷貝)

2)先複製結點,再考慮random問題

3)如果能從老的結點中找到新的結點問題好解決

結構:1.老-新-老-新...

2.處理random

3.拆開

鍊錶帶環和相交的問題

判斷兩個鍊錶是否相交?不帶環 1 第一種方法 我們只需要遍歷每條鍊錶,把最後乙個節點儲存起來,然後判斷這兩條鍊錶的最後乙個節點是否相等,如果是一樣的節點,那麼這兩個節點就一定相交。2 第二種方法 遍歷兩條鍊錶,求出鍊錶l1的鍊錶長度為len1,鍊錶l2的鍊錶長度為len2,長度差為 len1 len...

鍊錶帶環問題

1 判斷鍊錶是否帶環 基本思路 定義兩個指標,乙個快指標,乙個慢指標,快指標一次走兩步,慢指標一次走一步,當兩個指標重合的時候,說明該鍊錶是帶環的,當快指標為空或者快指標的下乙個節點為空,說明是不帶環的。實現 definition of listnode class listnode class s...

相交鍊錶 鍊錶

題目 編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 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 with v...