leetcode刷题

leetcode刷题,第1张

合并两个有序链表

1、暴力算法

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
    ListNode dummy = ListNode(-1);
    ListNode *prev = &dummy;

    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;
    }
    prev->next = l1 == nullptr ? l2 : l1;

    return dummy.next;
}

2、递归方法

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
    if (l1 == nullptr)
    {
        return l2;
    }
    else if (l2 == nullptr)
    {
        return l1;           
    }
    else if (l1->value < l2->value)
    {
        l1->next = mergeTwoLists(l1->next, l2);
        return l1; 
    }
    else
    {
        l2->next = mergeTwoLists(l1, l2->next);
        return l2;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/674846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存