Leetcode NO.21 Merge Two Sorted Lists && 合并链表(有序)

LeetCode高频面试题精讲:合并两个有序链表(Merge Two Sorted Lists) 算法面试题精解:​LeetCode 21. 合并两个有序链表​ 阅读详情

Leetcode NO.21 Merge Two Sorted Lists && 合并链表(有序)

1.问题描述

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

2.测试用例

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]

输出:[1,1,2,3,4,4]

示例 2:

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

输出:[]

示例 3:

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

输出:[0]

3.提示

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

4.代码

1.迭代
code
public ListNode mergeTwoListsWithLoop(ListNode l1, ListNode l2) {
        ListNode sentinel = new ListNode();
        ListNode pre = sentinel;

        while (l1 != null && l2 != null) {
            if (l1.val < l2.val) {
                pre.next = l1;
                pre = l1;
                l1 = l1.next;
            } else {
                pre.next = l2;
                pre = l2;
                l2 = l2.next;
            }
        }
        pre.next = l1 == null ? l2 : l1;

        return sentinel.next;
}
复杂度
* 时间复杂度 O(m + n)  m、n 分别为链表的长度
* 空间复杂度 O(1)
2.递归
code
public ListNode mergeTwoListsWithRecursion(ListNode l1, ListNode l2) {
        //1.定义结束条件
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }
        //2. 逻辑递归
        if (l1.val < l2.val) {
            l1.next = mergeTwoListsWithRecursion(l1.next, l2);
            return l1;
        } else {
            l2.next = mergeTwoListsWithRecursion(l1, l2.next);
            return l2;
        }
}
复杂度
* 时间复杂度 O(m + n) m、n 分别为链表的长度
* 空间复杂度 O(m + n )  m、n 分别为链表的长度
LeetCode 21. Merge Two Sorted Lists 合并两个有序单链表 一直觉得操作链表用C++比用Java药方便很多 Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 合并两个排好序的链表,并返回这个新链表。新链表应该由这两个链 阅读详情

相关推荐

简单说说Python中的pip如何换源

【安装包】:pip install 【升级包】:pip install --upgrade 【卸载包】:pip uninstall 【查看已安装的包】:pip list【搜索包】:pip search (注意:pip search功能在pip 10.0.0之后被弃用,建议使用其他方式搜索包,如访问PyPI官网或使用其他搜索引擎)

一捌柒的博客 2668

合并链表,带测试链表。注意建立的链表头是空的。

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 合并链表,带测试链表。想不明白为什么首字母还是出现空地址,导致通过失败。 #include<iostream> #include<string> #include<cctype> #include <vector> #include<exception...

hao240643983的博客 182

S32DS新建工程、编译调试下载、导入工程详细介绍

新建了一个工程之后,下面简单介绍下基本的UI界面。其中最左下角那个是界面,这个界面很重要,是图形化配置界面,然后可以根据这些配置自动生成代码。其中,左边那些配置文件,都是系统帮我们创建好了的,我们其实可以直接用就行。有PE工具的调试,以及Jlink工具的调试。我目前使用到PE工具调试可以查看寄存器值,而Jlink调试查看不了寄存器值。连接了开发板之后,点击Debug就可以吧程序下载到芯片上了,而且可以进入到调试界面。

luobeihai的博客 2万+

c/c++之合并两个排序的链表++++测试用例

c/c++之合并两个排序的链表++++测试用例 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的。例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 // 表3所示。 分析:首先分析两个链表的合并过程。链表1的头结点的值小于链表2的头节点的值,因此链表1的头结点是合并后链表的头结点。 然后继续合并两个链表中剩下的节点,两个链表中剩下的节点依旧是排序的,所以依旧比较头结点,此时链表2中的头结点小于链表1中的头结点,因此作为合并后链表的节点。依次类

weixin_44621617的博客 782

拆解维修指南:当你的大扭矩电动扳手‘罢工’,如何自己动手排查行星齿轮与谐波传动故障?

本文详细解析了大扭矩电动扳手行星齿轮与谐波传动故障的排查与修复方法。从故障初判、拆解工艺到行星齿轮系统检测、谐波传动维护,提供了一套完整的维修指南,帮助用户快速诊断和解决常见问题,延长工具使用寿命。

weixin_42525582的博客 436

微信公众号数据采集实战:历史文章、互动数据与评论详情全解析

本文提供了一套完整的微信公众号数据采集实战方案,详细解析了如何通过接口调用获取公众号的历史文章列表、单篇文章的互动数据以及详细的用户评论。文章从环境准备、核心参数解析到分页逻辑、批量处理和异常处理,提供了可运行的Python代码示例,旨在帮助开发者高效、稳定地构建自动化采集工具,用于竞品分析、内容研究和舆情监控。

u5v6w7的博客 1598

合并两个有序链表(递归/非递归) java

题目描述 题目地址: https://leetcode-cn.com/problems/merge-two-sorted-lists/ 要求:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例一: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例二: 输入:l1 = [], l2 = [] 输出:[] 示例三: 输入:l1 = [], l2 = [0] 输出:[0] 提示: 两个

qq_62939743的博客 751

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 926

合并两个有序链表(leetcode简单)+链表中倒数第k个结点

单链表之合并两个有序链表+一个快慢指针的补充

yzy521wjm的博客 599

2019年电赛D题《简易电路特性测试仪》全过程

2019年全国大学生电子设计大赛D题《简易电路特性测试仪》硬件部分及故障分析

zzhao2580的博客 5万+

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值)【含Matlab源码 4887期】

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值) 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 811

【力扣Leetcode题解系列之0021—Merge Two Sorted Lists 合并两个有序链表】

链表操作的核心要点:合并有序链表问题涵盖了链表操作的多个核心要点,包括节点的比较、指针的移动和链表的拼接。通过解决这类问题,我们深入理解了链表数据结构的特性以及如何灵活运用指针来实现复杂的操作。无论是迭代还是递归的方法,都需要精确控制指针的指向和移动,确保链表结构的完整性和正确性。算法设计的灵活性:本题的多种解法以及扩展题目展示了算法设计的灵活性。迭代法直观且易于理解,递归法简洁明了,能够体现问题的递归本质。在面对不同的问题场景时,我们需要根据具体需求选择合适的解法。

youngerwang的博客 1064

【CloudCompare】Windows源码编译CloudCompare

本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的

yijiujiusan的博客 486

LeetCode 21. Merge Two Sorted Lists(合并两个有序链表) -- c语言

21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2-&gt...

d_benhua的博客 360

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

错误点说明忘记处理 list1 或 list2 为空递归终止条件必须明确返回值写错必须返回当前较小节点忘记链表节点next指向递归结果合并后需要正确接上剩余部分本题考察的是链表合并技巧,是刷链表题目的基础必刷题。递归法写法简洁优雅,利于展示思路清晰。需要注意如果链表非常长,递归层数过多可能导致栈溢出,此时可以选择迭代法(循环解)(空间复杂度 O(1))。

2501_91641025的博客 580

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists)

LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists) 文章目录LeetCode第21题思悟——合并两个有序链表(merge-two-sorted-lists)知识点预告题目要求示例我的思路优秀解法差异分析知识点小结 知识点预告 空头节点的处理; 题目要求 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 ...

博采众长,自成一派; 496

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode 21. Merge Two Sorted Lists 题解

本题是链表合并的经典问题。迭代方法:虚拟头节点的使用递归方法:递归的终止条件处理剩余节点通过本题可以深入理解链表的基本操作。

cannonjinx的博客 4166

leetcode 21.合并两个有序链表(merge two sorted lists)C语言

leetcode 21.合并两个有序链表(merge two sorted lists)C语言1.description2.solution 1.description https://leetcode-cn.com/problems/merge-two-sorted-lists/description/ 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2-&g

hsk6543210的博客 432

LeetCode 21 Merge Two Sorted Lists 把两个链表有序连接

题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 翻译: 把2个有序链表连接,返回一个新链表 思路: 很简单,就是遍历每个节点,小的话添加在

大三狗现在才努力还不算晚吧?! 2470

Leetcode 21. Merge Two Sorted Lists 合并两个有序链表

Leetcode 21. Merge Two Sorted Lists 合并两个有序链表 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。&nbsp; 示例: 输入:1-&gt;2-&gt;4,...

CoderWangSon 258

【LeetCode系列】21 Merge Two Sorted Lists 合并两个有序链表

题目描述:LeetCode原题地址 Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有...

Olivia_he 234

【leetcode】21. 合并两个有序链表(Merge Two Sorted Lists)

题目描述 【leetcode】21. 合并两个有序链表(Merge Two Sorted Lists)) 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 第一次解答 思路: 链表都是有序的 我把第二个链表,有序的插入到第一个链表中,得到结果。 为了更方便,我们把两个链表中第一个元素小的那个作为基准, 把另一个链表插入基准中。 p1指向链表L1的第1...

Liber-coder的博客 202

Leetcode #21 Merge Two Sorted Lists 合并有序链表 解题报告

0 题外话嗯,从这次开始我就把题目换一下,改成解题报告了,因为我小节小结总是不分,等有时间也去改下之前的解题报告咯~~我算了下自己的速度,作为一个本学期的额外爱好,到现在21天刷了100题,速度也还算好,毕竟像今天这样基本一题没法刷的时间占到一周的一半多的时间。1 解题思想题目是给两个单链表,里面的数值都是有序的,现在要求他们合并成一个有序链表。这道题的做法就是,从两个单链表的头结点开始分别设立两个

MebiuW的专栏 2168

LeetCode 21. 合并两个有序链表 Merge Two Sorted Lists

Table of Contents 一、中文版 二、英文版 三、My answer 四、解题报告 一、中文版 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 二、英文版 Merge two ...

三妹的博客 431

LeetCode 21. Merge Two Sorted Lists【合并有序链表】

文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档 题目描述 知识点 链表 结果 实现 码前思考 就是很传统的链表操作 代码实现 //类似于归并排序的思想 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

yc_cy1999的博客 286

LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

21. 合并两个有序链表 21. Merge Two Sorted Lists 题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 LeetCode21. Merge Two Sorted Lists 示例: 输入: 1->2->4, 1->3->4 输出: 1->1->2->3->4->4 ...

weixin_30896763的博客 125
上一篇: Leetcode NO.206 Reverse Linked List 反转链表(迭代&递归)
下一篇: Leetcode NO.19 Remove Nth Node From End Of List && 移除链表倒数第n个节点
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值