劍指offer 合併兩個排序的鏈表

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

思路:先比較鏈表1的頭節點的值和鏈表2的頭節點的值,將小的做爲新鏈表的頭節點,接下來繼續比較。。(遞歸)

例如圖:1比2小,作爲新鏈表的頭部,繼續比較2和3。。。

當list1爲null時,合併後即爲list2。同樣,當list2爲null時,合併後即爲list1。

/**
 * @author yuan
 * @date 2019/2/12
 * @description
 */
public class 合併兩個排序的鏈表 {
    static class ListNode {
        int val;
        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }
    public ListNode Merge(ListNode list1,ListNode list2) {
        if (list1 == null) {
            return list2;
        }
        if (list2 == null) {
            return list1;
        }
        ListNode head = null;
        if (list1.val < list2.val) {
            head = list1;
            head.next = Merge(list1.next, list2);
        } else {
            head = list2;
            head.next = Merge(list1, list2.next);
        }

        return head;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章