LeetCode 21.合併兩個有序連結串列 C++程式碼實現
阿新 • • 發佈:2018-12-31
題目描述:
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4
思路:這道題應該沒什麼大問題,分別比較兩個連結串列裡面的值的大小,然後放到新的連結串列中,最後把剩下未排完的連結串列全部放入。
程式碼實現:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* l3 = new ListNode(0); ListNode *a1=l1,*a2=l2; ListNode *a3=l3; while(a1&&a2){ //依次比較兩個連結串列中數的大小 if(a1->val<=a2->val){ a3->next=a1; a1=a1->next; a3=a3->next; } else{ a3->next=a2; a2=a2->next; a3=a3->next; } } while(a1){ //若l1連結串列有剩餘,則全部放到最後 a3->next=a1; a1=a1->next; a3=a3->next; } while(a2){ //若l2連結串列有剩餘,則全部放到最後 a3->next=a2; a2=a2->next; a3=a3->next; } return l3->next; } };