题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
合并的方法是在dummy节点之后不断“续弦”
进行节点的val的比对,把值较小的一方的节点续在dummy节点之后!
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
if (!pHead1 && !pHead2) return nullptr;
if (!pHead1) return pHead2;
if (!pHead2) return pHead1;
ListNode dummy(0);
ListNode *cur = &dummy;
while (pHead1 && pHead2) {
if (pHead1->val <= pHead2->val) {
cur->next = pHead1;
pHead1 = pHead1->next;
} else {
cur->next = pHead2;
pHead2 = pHead2->next;
}
cur = cur->next;
}
cur->next = pHead1 ? pHead1 : pHead2;
return dummy.next;
}
};
供各位复制(bushi)
class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if (!pHead1 && !pHead2) return nullptr; if (!pHead1) return pHead2; if (!pHead2) return pHead1; ListNode dummy(0); ListNode *cur = &dummy; while (pHead1 && pHead2) { if (pHead1->val <= pHead2->val) { cur->next = pHead1; pHead1 = pHead1->next; } else { cur->next = pHead2; pHead2 = pHead2->next; } cur = cur->next; } cur->next = pHead1 ? pHead1 : pHead2; return dummy.next; } };