1. 程式人生 > 實用技巧 >合併有序連結串列

合併有序連結串列

將兩個升序連結串列合併為一個新的 升序 連結串列並返回。
新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
[https://leetcode-cn.com/problems/merge-two-sorted-lists/](LeetCode 21)

//方法1、迭代
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1NULL)
return l2;
if(l2
NULL)
return l1;

    ListNode* temp=new ListNode(0);
    ListNode* head=temp;
    while(l1&&l2){
            if(l1->val<=l2->val){
            temp->next=l1;
            l1=l1->next;
        }
        else{
            temp->next=l2;
            l2=l2->next;
        }
        temp=temp->next;
    }
    if(l1==NULL){
        temp->next=l2;
    }
    else
        temp->next=l1;
return head->next;
}

};

//方法2、遞迴
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1NULL)
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;
    }
    
}

};