【力扣 087】21. 合併兩個有序連結串列
阿新 • • 發佈:2022-05-30
21. 合併兩個有序連結串列
將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例 1:
輸入:l1 = [1,2,4], l2 = [1,3,4]
輸出:[1,1,2,3,4,4]
示例 2:
輸入:l1 = [], l2 = []
輸出:[]
示例 3:
輸入:l1 = [], l2 = [0]
輸出:[0]
提示:
兩個連結串列的節點數目範圍是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非遞減順序 排列
來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/merge-two-sorted-lists
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
程式碼實現:
/** * 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* list1, ListNode* list2) { ListNode *pa = list1, *pb = list2; ListNode *head = new ListNode(-1), *p = head; while(pa && pb) { if(pa->val <= pb->val) { p->next = pa; p = p->next; pa = pa->next; } else { p->next = pb; p = p->next; pb = pb->next; } } if(pa) p->next = pa; if(pb) p->next =pb; return head->next; } };