89.(21)合併兩個有序鏈表

題目描述:

將兩個升序鏈表合併爲一個新的 升序 鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 

示例:

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

代碼:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode *head=new ListNode(0);
        ListNode *l3;
        l3 = head;
        while(l1!=NULL&&l2!=NULL)
        {
            if(l1->val>=l2->val)
            {
                l3->next=l2;
                l2=l2->next;
            }
            else
            {
                l3->next=l1;
                l1=l1->next;
            }
            l3=l3->next;
        }
        if(l1!=NULL)
        {
            l3->next=l1;
        }
        if(l2!=NULL)
        {
            l3->next=l2;
        }
        return head->next;
    }
};

執行效率:

執行用時:12 ms, 在所有 C++ 提交中擊敗了54.68%的用戶

內存消耗:14.6 MB, 在所有 C++ 提交中擊敗了5.61%的用戶

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