leetcode 21. 合并两个有序链表

思路:

l1 或 l2若有一者为空则返回非空链表
若都非空,则判断 l1 和 l2 的val,val小的将其 next 递归添加到结果的节点
递归终止条件:l1 或 l2 有一为空

代码:

/**
 * 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* l1, ListNode* l2) {
        if (l1 ==NULL) //如果一条为空,则返回另一条
        {
            return l2;
        }
        if (l2 == NULL)
        {
            return l1;
        }
        if (l1->val < l2->val) //值较小的,将后面的添加到值较小的后面
        {
            l1->next = mergeTwoLists(l2,l1->next);
            return l1;
        }
        else{
            l2->next = mergeTwoLists(l2->next,l1);
            return l2;
        }

    }
};

 

posted @ 2021-09-26 15:39  A-inspire  Views(19)  Comments(0Edit  收藏  举报