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;//l1的现节点指针移动
} else {
prev->next = l2;//新链表的当前节点指针指向
l2 = l2->next;//l1的现节点指针移动
}
prev = prev->next;//新链表节点的指针下移
}
//下面是只剩下一条或者一条都没有
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
prev->next = l1 == nullptr ? l2 : l1;// l1为空的话第三条的指针就指向l2的剩余部分,反之亦然
return preHead->next;//返回第三条链表的第二个节点
}
};
LeetCode21
最新推荐文章于 2024-06-13 23:56:26 发布