码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 21 合并有序链表

时间:2021-05-24 02:11:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:直接   problem   nbsp   efi   简单   难度   sts   str   code   

21. 合并两个有序链表

难度简单

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例 1:

技术图片
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

 

/**
 * 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) {
        ListNode* preHead = new ListNode(-1);

        ListNode* prev = preHead;
        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;
        }

        // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
        prev->next = l1 == nullptr ? l2 : l1;

        return preHead->next;
    }
};

/**
 * 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==nullptr){
            return l2;
        }else if(l2==nullptr){
            return l1;
        }
        ListNode *pre=new ListNode(-1);
        ListNode *tmp=pre;
        while(l1!=nullptr&&l2!=nullptr){
            if (l1->val<l2->val){
                tmp->next=l1;
                l1=l1->next;
            }else{
                tmp->next=l2;
                l2=l2->next;
            }
            tmp=tmp->next;
        }
        tmp->next=l1==nullptr?l2:l1;
        return pre->next;
    }
};



1,三目表达式

x < 0 ? y = 10 : z = 20;

这个语句被称为条件表达式,它由 3 个子表达式组成,使用问号 ? 和冒号 : 分隔。这 3 个表达式分别是:x<0,y = 10 和 z = 20。

上面的条件表达式与以下 if-else 语句执行相同的操作:
if (x < 0)
    y = 10else
    z = 20;

2,类和空间的使用

3,指针的使用

 

LeetCode 21 合并有序链表

标签:直接   problem   nbsp   efi   简单   难度   sts   str   code   

原文地址:https://www.cnblogs.com/kai-xuan/p/14746257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!