可以创建一个新链表记录答案:
/*** 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* result=new ListNode();ListNode* now=result;while(list1||list2){if(list2==nullptr||list1&&list1->val<list2->val){now->next=list1;list1=list1->next;}else if(list1==nullptr||list2&&list1->val>=list2->val){now->next=list2;list2=list2->next;}now=now->next;}return result->next;}
};
也可以用递归直接在原有链表上创建答案:
/*** 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;}else{list2->next=mergeTwoLists(list1,list2->next);return list2;}}
};