输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。
如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:
class Solution {
public:
ListNode *Merge(ListNode *pHead1, ListNode *pHead2) {
if (pHead1 == nullptr || pHead2 == nullptr)
return pHead1;
ListNode *dummy = new ListNode;//额外设置一个节点
ListNode *s = dummy;
ListNode *p1 = pHead1;
ListNode *p2 = pHead2;
while (p1 && p2) {
if (p2->val >= p1->val) {
s->next = p1;
s = s->next;
p1 = p1->next;
} else {
s->next = p2;
s = s->next;
p2 = p2->next;
}
}
if (p1 == nullptr)
s->next = p2;
if (p2 == nullptr)
s->next = p1;
return dummy->next;
}
};