LeetCode (21)Merge Two Sorted Lists

(21)Merge Two Sorted Lists

題目:將兩個排好序的鏈表合併成一個排好序的鏈表,不允許開額外的空間。

例子:

所給鏈表爲l1 = 1->2->3,l2 = 2。
返回鏈表爲result = 1->2->2->3。

根據題目就是簡單的插入而已,在整個過程中將小的數字插在前面,大的數字放在後面就可以了。只不過用到的是鏈表,不是數組,所以整個過程中考慮的東西比較複雜,也是這道easy的題目讓我感覺到我在鏈表方面的欠缺,以後需要提高。

下面是代碼:

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1 == NULL){
            return l2;
        }
        if(l2 == NULL){
            return l1;
        }
        ListNode *head = (ListNode *)malloc(sizeof(ListNode)), *q;
        head->next = l1;
        q = head;
        while(l1!=NULL&&l2!=NULL){
            if(l2->val < l1->val){
                ListNode *p = l2->next;
                l2->next = l1;
                q->next = l2;
                l2 = p;
            }
            else{
                l1 = l1->next;
            }
            q = q->next;
        }
        if(l2 != NULL){
            q->next = l2;
        }
        return head->next;
    }
};
發佈了48 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章