剑指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;
    }

}

 

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