面試題17:合并兩個排序的鏈表

題目:

輸入兩個遞增排序的鏈表,合并這兩個鏈表并使鏈表中的結(jié)點仍然是按照遞增排序的。

思路:

假若有l(wèi)ist1:{1,3,5}
list2:{2,4,6}
1)先比較1和2,明顯是1小。所以list1的1結(jié)點為合并鏈表的頭結(jié)點。合并鏈表為{1}
2)接下來比較list1:{3,5} 和 list2:{2,4,6}鏈表,明顯2比3小,將2加入到合并的鏈表,所以合并后的鏈表為{1,2}。
3)重復(fù)類似2)的步驟,即每次從兩個鏈表中選出val較小的結(jié)點,并拼接到合并鏈表。
此處使用遞歸代碼更加精簡

  • 注:考慮鏈表為空的特殊情況!

實現(xiàn):

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if (list1 == null){
            return list2;
        } else if (list2 == null){
            return list1;
        }

        ListNode pMergeHead = null;
        if (list1.val <= list2.val) {
            pMergeHead = list1;
            pMergeHead.next = Merge(list1.next, list2);
        } else {
            pMergeHead = list2;
            pMergeHead.next = Merge(list1, list2.next);
        }
        return pMergeHead;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述 輸入兩個單調(diào)遞增的鏈表,輸出兩個鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 代碼實現(xiàn) ...
    _minimal閱讀 2,550評論 1 0
  • 題目:輸入兩個遞增排序的鏈表,合并這兩個鏈表并使新鏈表中的結(jié)點仍然是按照遞增排序的。
    Felicia1993閱讀 188評論 0 0
  • 題目:輸入兩個遞增排序的鏈表,合并這兩個鏈表并使新鏈表中的結(jié)點仍然遞增。 解法:鏈表的歸并,根據(jù)示意圖調(diào)整指針指向即可。
    qmss閱讀 184評論 0 0
  • 題目:輸入兩個單調(diào)遞增的鏈表,輸出兩個鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。比如:輸入 [1...
    minningl閱讀 110評論 0 0
  • 高效率慢生活踐行第2天 2018.11.16晨間檢視 就寢10:20晨起4:40 昨日午休/冥想:0min 時間管...
    小妮蛋閱讀 263評論 0 0

友情鏈接更多精彩內(nèi)容