首页 > 编程语言 > 详细

LeetCode第2题(c语言)

时间:2021-06-01 00:39:48      阅读:21      评论:0      收藏:0      [点我收藏+]
typedef struct ListNode{
    int val;
    struct ListNode *next;
}ListNode;

/*
    迭代 
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    if(l1 == NULL) return l2;
    if(l2 == NULL) return l1; 
    struct ListNode* p1 = l1;
    struct ListNode* p2 = l2;
    struct ListNode* l3,*p3;
    if(l1->val < l2->val)
    {
        l3 = l1;
        l1 = l1->next;
        p3 = l3;
    }
    else
    {
        l3 = l2;
        l2 = l2->next;
        p3 = l2;
    }
    while(p1 && p2)
    {
        if(p1->val <= p2->val)
        {
            p3->next = p1;
            p3 = p1;
            p1 = p1->next;
        }
        else
        {
            p3->next = p2;
            p3 = p2;
            p2 = p2->next;
        }
    }
    p3->next = p1?p1:p2;
    free(l2);
    return l3;
}

/*
    递归 
*/ 
struct ListNode* mergeTwoLists2(struct ListNode* l1, struct ListNode* l2)
{
    if(l1 == NULL) return l2;
    if(l2 == NULL) return l1;
    if(l1->val <= l2->val)
    {
        l1->next = mergeTwoLists(l1->next,l2);
        return l1;
    }
    else
    {
        l2->next = mergeTwoLists(l1,l2->next);
        return l2;
    }
}

 

LeetCode第2题(c语言)

原文:https://www.cnblogs.com/xie213/p/14833798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!