1. 程式人生 > 其它 >LeetCode 21.合併兩個有序連結串列

LeetCode 21.合併兩個有序連結串列

題目
將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

分析
定義result儲存結果,將兩個連結串列各自遍歷一遍,每次各拿出一個結點比較,把較小的連線在result後面,直到至少有一個連結串列元素全用完,此時,將另一個連結串列剩餘部分直接連線在當前結果後面。

圖解

程式碼

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* result = new ListNode(-1
); ListNode* cur1 = l1; ListNode* cur2 = l2; ListNode* cur = result; while (cur1 != nullptr && cur2 != nullptr) { if (cur1->val < cur2->val) { cur->next = cur1; cur1 = cur1->next; }
else { cur->next = cur2; cur2 = cur2->next; } cur = cur->next; } if (cur1 == nullptr) cur->next = cur2; if (cur2 == nullptr) cur->next = cur1; return result->next; } };