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

2022-07-10 08:27:11 字數 921 閱讀 5594

題目描述

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

題目示例

輸入:
,

返回值:
解法分析因為給出的兩個鍊錶都是單調遞增的,合併後的鍊錶也是單調不遞減,所以我們只需要對比兩個鍊錶的頭結點即可,若哪個鍊錶的頭結點更小,就記錄在新鍊錶中,然後該煉表頭結點指向後乙個結點,直到兩個鍊錶都指向null。返回做記錄的新鍊錶即可。見演算法1。

因為需要不斷比較兩個鍊錶的頭結點,所以我們也可以考慮使用遞迴方法,見演算法2。

**

演算法1

1

/*function listnode(x)*/5

function

merge(phead1, phead2)

6else

20 cur =cur.next;21}

22 cur.next = phead1 ?phead1 : phead2;

23return

phead.next;

24 }

演算法2

1

function

merge(phead1, phead2)

2else

14return

phead;

15 }

執行結果

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

題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 先對兩個鍊錶用容器進行 然後在容器中對容器內的元素進行排序,最後進行合成鍊錶。struct listnode class solution while phead2 null sort vec.b...

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

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。時間限制 1秒 空間限制 32768k 熱度指數 366049 本題知識點 鍊錶 新建乙個鍊錶,然後兩個煉表頭元素比較,取較小值加入到鍊錶中 做這道題做了很久,雖然很簡單,但總報錯說死迴圈,後來發現原來是指標...

《劍指Offer》16 合併兩個排序的鍊錶

題目 16.合併兩個排序的鍊錶 知識點 魯棒性 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 解法一 使用迴圈實現,即首先排除特殊情況 兩個鍊錶同時為空,或其中之一為空 其次同時對兩個鍊錶進行遍歷,將值較小的結點接到輸出鍊錶末尾即可。...