题目:
代码(首刷自解 2024年3月4日):
链表题都要开头if
/**
* 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) {
if (!list1) return list2;
if (!list2) return list1;
ListNode* p;
ListNode* curA = list1;
ListNode* curB = list2;
if (curA->val > curB->val) {
p = curB;
curB = curB->next;
} else {
p = curA;
curA = curA->next;
}
ListNode* res = p;
while (curA != nullptr && curB != nullptr) {
if (curA->val >= curB->val) {
p->next = curB;
curB = curB->next;
p = p->next;
} else {
p->next = curA;
curA = curA->next;
p = p->next;
}
cout<<p->val<<" ";
}
if (curA == nullptr) p->next = curB;
else p->next = curA;
return res;
}
};
代码(二刷看解析 2024年7月30日)
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode* dummyHead = new ListNode(0);
ListNode* cur = dummyHead;
while (list1 != nullptr && list2 != nullptr) {
if (list1->val < list2->val) {
cur->next = list1;
list1 = list1->next;
} else {
cur->next = list2;
list2 = list2->next;
}
cur = cur->next;
}
cur->next = list1 == nullptr ? list2 : list1;
return dummyHead->next;
}
};