前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日leetcode】4.合并有序链表

【每日leetcode】4.合并有序链表

作者头像
一条coding
发布2021-08-12 10:30:15
3630
发布2021-08-12 10:30:15
举报
文章被收录于专栏:一条IT
代码语言:javascript
复制

先提前剧透一下,大家要好好做这一题,因为148题会用到这一题... ——leetcode此题热评

前言

xdm,现在是早上8:14,窗外下着小雨 我是一条,我在做leetcode21题 加油!

Question

难度:简单

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

示例 1:

代码语言:javascript
复制
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

代码语言:javascript
复制
输入:l1 = [], l2 = []
输出:[]

示例 3:

代码语言:javascript
复制
输入:l1 = [], l2 = [0]
输出:[0]

提示:

代码语言:javascript
复制
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

Solution

不知道大家还记得合并有序数组吗? 异曲同工 忘记的小伙伴可以先看一下 传送门

  • l1l2 都不是空链表时,判断l1l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里。
  • 当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。
  • 将非空链表接在合并链表的后面
  • 对于链表操作,一般都需要维护一个当前节点的指针,可以再点击阅读原文回看一下两数相加帮助理解

Code

所有leetcode代码已同步至github https://github.com/lbsys/leetcode/tree/master/src/leetcode/editor/cn 欢迎star

代码语言:javascript
复制
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode l3 = new ListNode(-1);
        ListNode cur=l3;
        while (l1!=null&&l2!=null){
            if (l1.val <= l2.val) {
                cur.next = l1;
                l1 = l1.next;
            } else {
                cur.next = l2;
                l2 = l2.next;
            }
            cur=cur.next;
        }
        cur.next = l1 == null ? l2 : l1;
        return l3.next;

    }
}

Result

复杂度分析

  • 时间复杂度:O(m+n)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一条coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Question
  • Solution
  • Code
  • Result
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档