兩個鍊錶的第乙個公共結點
舉例 1 2 3 4 5
6 4 5
將前面的12給擷取,最後同時遍歷後三個得到4
1 2 3 4 5 nullptr 5 4 6 nullptr
6 4 5 nullptr 1 2 3 4 5 nullptr
當兩者節點相同時結束
可以觀察到4 5 重合時前面的元素個數一樣
數學歸納一般規律 ax bx;x代表相同部分,a、b代表不同部分(假設長度為m、n個)
a(m) x b(m) x
b(n) x a(n) x
可見最後x前的長度均為m+n+x個
特殊情況考慮
情況一123 456 二者沒有公共點 最後找到nullptr p1換成p2
情況二m=n 123 423 在第一次就找到2時公共點 沒問題
情況三 乙個鍊錶為 另乙個為
1 2 3 nullptr nullptr
nullptr 1 2 3 nullptr
綜上我們得出如下結論:
當指向nullptr時切換另乙個鍊錶否則一直在本鍊錶上遍歷
listnode*findfirstcommonnode(listnode*phead1,listnode*phead2)return
p1;
}
劍指offer 合併兩個鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...
劍指offer 兩個鍊錶的合併
我怕是要丸,鍊錶合併不會寫了!題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,合成後的鍊錶滿足單調遞增。首先遞迴方法 struct listnode listnode reverselist listnode phead first next last return first 非遞迴 ty...
劍指Offer 合併兩個排序鍊錶
題目 輸入兩個遞增排序的鍊錶,合併兩個鍊錶並使新鍊錶依然是有序的 鍊錶定義如下 typedef struct listnode linklist 例子如下 首先考慮輸入特殊情況。我們假設輸入鍊錶如果不為空的話必然有序,也就是說不用判斷其有序性。當輸入鍊錶都為空指標,此時返回的鍊錶也需要為空指標。如果...