题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
/**
* 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* l1, ListNode* l2) {
//思路:归并排序
ListNode* start = new ListNode(0,nullptr);
ListNode* poi = start;
while(l1 && l2){
//l1>=l2
if(l1->val>=l2->val){
poi->next=l2;
poi=poi->next;
l2=l2->next;
}
//l1<l2
else{
poi->next=l1;
poi=poi->next;
l1=l1->next;
}
}
//将剩余部分输出
while(l1)
{
poi->next=l1;
poi=poi->next;
l1=l1->next;
}
while(l2)
{
poi->next=l2;
poi=poi->next;
l2=l2->next;
}
return start->next;
}
};