21 Merge Two Sorted Lists

/21. Merge Two Sorted List

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

分析及代码

第一种方法没什么好说的

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    if(l1 == null) {
        return l2;
    }
    if(l2 == null) {
        return l1;
    }
    ListNode head = new ListNode(-1);
    ListNode result = head;
    while(l1 != null && l2 != null) {
        if(l1.val < l2.val) {
            head.next = l1;
            l1 = l1.next;
        } else {
            head.next = l2;
            l2 = l2.next;
        }
        head = head.next;
    }
    if(l1 == null) {
        head.next = l2;
    }
    if(l2 == null) {
        head.next = l1;
    }
    return result.next;
}

发现可以用递归调用,非常elegant

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    if(l1 == null) {
        return l2;
    }
    if(l2 == null) {
        return l1;            
    }
    if(l1.val < l2.val) {
        l1.next = mergeTwoLists(l1.next, l2);
        return l1;
    } else {
        l2.next = mergeTwoLists(l1, l2.next);
        return l2;
    }
}

O(len1 + len2)

results matching ""

    No results matching ""