将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:l1 = [1,2,4], l2 = [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* list1, ListNode* list2) {
- if(list1 == nullptr) return list2;
- if(list2 == nullptr) return list1;
- if(list1->val <= list2->val)
- {
- list1->next = mergeTwoLists(list1->next, list2);
- return list1;
- }
- list2->next = mergeTwoLists(list1, list2->next);
- return list2;
- }
- };