思想很简单:比较两个链表数值的大小,构建新的链表即可:
/**
* 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* p = new ListNode();
ListNode* head = p;
while(list1!=nullptr && list2!=nullptr){
if(list1->val <= list2->val){
p->next = list1;
list1 = list1->next;
}
else{
p->next = list2;
list2 = list2->next;
}
p = p->next;
}
if(list1==nullptr){
p->next= list2;
}
if(list2==nullptr){
p->next= list1;
}
return head->next;
}
};