合併兩個排序鏈表

劍指offer第16題:
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。

理解:

首先考慮特殊情況的出現。常規情況中,對list1和list2中的val進行對比。根據對比的情況,賦予newList,讓newList的next**指向Merge遞歸的結果**,這樣才能連接成鏈。
對於鏈表的題一定要確認鏈表中間沒有丟失,最後要確認是否真的成鏈。

/*
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;
        }else if(list1==null && list2==null){
            return null;
        }
        ListNode newList = null;
        if(list1.val <= list2.val){
            newList = list1;
            newList.next = Merge(list1.next, list2); //遞歸
        }else{
            newList = list2;
            newList.next = Merge(list1, list2.next); //遞歸
        }
        return newList;
    }
}

知識點:
- 鏈表 ;
- 遞歸

發佈了64 篇原創文章 · 獲贊 95 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章