Pat乙勉勉强强刷完三分之一,来到了心心念念的Leetcode 果真开门大吉
一道题我搞了俩小时 有序表合并 21题
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2)
{
ListNode* dummy = new ListNode(-1);
ListNode* p = dummy->next;
ListNode* p1=l1;ListNode* p2=l2;
while(p1!=nullptr&&p2!=nullptr)
{
if(p1->val>p2->val)
{
p->next = p2;
p2 = p2->next;
}
else
{
p->next = p1;
p1 = p1->next;
}
p = p->next;
}
if(p1==nullptr) p = p2->next;
else p = p1->next;
return dummy->next;
}
};
跑了n久都没跑过 想吐血,老哥们来评评理 哭死
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2)
{
ListNode* preHead = new ListNode(-1);
ListNode* prev = preHead;
while (l1 != nullptr && l2 != nullptr) {
if (l1->val < l2->val) {
prev->next = l1;
l1 = l1->next;
} else {
prev->next = l2;
l2 = l2->next;
}
prev = prev->next;
}
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev->next = l1 == nullptr ? l2 : l1;
return preHead->next;
}
};
他这个竟然就过了,我佛了
最后还是过了
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2)
{
ListNode* dummy = new ListNode(-1);
ListNode* p = dummy;
ListNode* p1=l1;ListNode* p2=l2;
while(p1!=nullptr&&p2!=nullptr)
{
if(p1->val>p2->val)
{
p->next= p2;
p2 = p2->next;
}
else
{
p->next= p1;
p1 = p1->next;
}
p = p->next;
}
if(p1==nullptr) p->next = p2;
else p->next = p1;
return dummy->next;
}
};