1. 程式人生 > 其它 >劍指Offer-23合併兩個排序的連結串列

劍指Offer-23合併兩個排序的連結串列

技術標籤:劍指Offer

public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    // 偽節點
    ListNode node = new ListNode(-1);
    ListNode head = node;
    ListNode p;
    // 尾插法實現
    while (l1 != null && l2 != null){
        if (l1.val < l2.val){
            p = new ListNode(l1.val);
            l1 = l1.next;
        }else {
            p = new ListNode(l2.val);
            l2 = l2.next;
        }
        node.next = p;
        node = p;
    }
    // 剩餘的都接上
    while (l1 != null){
        p = new ListNode(l1.val);
        node.next = p;
        node = p;
        l1 = l1.next;
    }
    while (l2 != null){
        p = new ListNode(l2.val);
        node.next = p;
        node = p;
        l2 = l2.next;
    }
    return head.next;
}

這程式碼可以簡潔很多

public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    // 偽節點
    ListNode head = new ListNode(-1);
    ListNode node = head;
    // 尾插法實現
    while (l1 != null && l2 != null){
        if (l1.val < l2.val){
            node.next = l1;
            l1 = l1.next;
        }else {
            node.next = l2;
            l2 = l2.next;
        }
        node = node.next;
    }
    // 剩餘的都接上
    if (l1 != null){
        node.next = l1;
    }
    if (l2 != null){
        node.next = l2;
    }
    return head.next;
}