劍指offer 25 合併兩個排序的鍊錶

2021-08-28 04:20:51 字數 810 閱讀 1676

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

1)非遞迴的方法

如果可以改變鍊錶,直接從頭結點開始依次移動比較兩個鍊錶當前值的大小,把較小的值作為當前結點的下乙個結點。

注意:剛剛開始的時候不知道頭結點到底是1的還是2的,所以新建乙個額外的新節點作為輔助:

listnode *first = new listnode(-1);

返回first->next即為所求。

2)遞迴的方法

每次比較頭結點node1和node2的值,如果把小的作為當前的結點,然後遞迴地比較下乙個結點。

1)非遞迴方法

/*

struct listnode

};*/

//非遞迴解決方法

class solution

else

tmp = tmp->next;

} if (node1 == null) tmp->next = node2;

if (node2 == null) tmp->next = node1;

return first->next;

}};

2)遞迴方法

class solution 

else

return head;

}};

劍指offer25 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然使遞增排序的。例如 輸入下圖的鍊錶1和鍊錶2,則合併之後的公升序鍊錶如圖鍊錶3所示。鍊錶定義如下 思路 從兩個鍊錶的頭結點開始,比較兩個鍊錶的頭結點的值大小,值小的結點就是合併後鍊錶的頭結點,繼續合併鍊錶中剩餘的節點,在兩個鍊錶中剩下...

劍指offer 25 合併兩個排序的鍊錶

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。輸入 1 3 5 2 4 5 輸出 1 2 3 4 5 5 二路歸併 新建乙個頭節點pmergedhead,並設定乙個指標pcurrenthead指向pmergedhead比較phead1和phead2指標指向的值 phead...

劍指 Offer 25 合併兩個排序的鍊錶

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。示例1 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 限制 0 鍊錶長度 1000 解 原地修改 雙指標各指乙個原鍊錶,比較大小,新增較小節點至合併鍊錶,雙指標交替前進。時間複雜度o m n 空間複雜度o 1 c...