题目描述
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
思路
简单题,两个指针就能解决。
代码
cpp
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
if(!list1) return list2;
if(!list2) return list1;
ListNode *p1=nullptr;
ListNode *p2=nullptr;
ListNode *q=nullptr;
if(list1->val<list2->val){
p1=list1;
p2=list2;
}
else{
p1=list2;
p2=list1;
}
ListNode *res=p1;
while(p2!=nullptr){
if(p2->val>=p1->val&&(!p1->next||p2->val<p1->next->val)){
q=p2->next;
p2->next=p1->next;
p1->next=p2;
p2=q;
}
else
p1=p1->next;
}
return res;
}
};