Leetcode原题 合并两个有序链表 (JAVA解决)

合并两个有序链表『java实现』 题目: 解题思想: 创建一个有带头结点的新链表,比较L1 与L2的结点值,若L1当前的结点值小于或等于L2当前的结点值,把小的先放进新链表中,然后再比较L1的下一个结点,直至为空。也就是如下的迭代思想了。 个人在思想出现误区: 创建新链表,然后比较L1和L2的结点值,若L1<L2的结点值的话,直接把L1 和 L2放进了新的链表中,然后新链表的最后一个结点值 再与L1的下一个结点值比较,但是发现,思考不全面,也没办法实现。 官方解答: 最终过程: 详细过程参考LeetCode官方解答 算法实现 / 阅读详情

示例 1:

输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/middle-of-the-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题使用递归实现,新链表也不需要构造新节点,我们下面列举递归三个要素
终止条件:两条链表分别名为 l1 和 l2,当 l1 为空或 l2 为空时结束
返回值:每一层调用都返回排序好的链表头
本级递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理

代码如下面

class Solution {
    public ListNode middleNode(ListNode head) {
        
        ListNode fast =head;
        ListNode slow =head;
        if(head==null)
            return null;
        while(fast!=null&&fast.next!=null)
        {
            slow=slow.next;
            fast=fast.next.next;
        }
        return slow;
}}
TCGA之GDC-client工具下载安装与使用 文章主要是对GDC-client工具下载TCGA数据库数据整个过程的一个记录 1.下载GDC-client工具 GDC-client工具网址:GDC Data Transfer Tool | NCI Genomic Data Commons (cancer.gov) 我这里下的是上图中红圈中的版本, 2.解压安装 从网上了解的是不能解压到带中文的路径里,解压后是一个.exe文件,为了能直接在cmd命令行下使用,将其加入系统环境: 点击新建之后,输入将文件解压到的路径,然后... 阅读详情

相关推荐

Unity3D赛车游戏+脚本基础

本章主要介绍Unity的基础开发流程以及涉及到的概念。这个过程需要我们学会编写一些游戏脚本,在这讲的过程中我们会完成一个赛车小游戏,因此,在讲述这些基本概念和流程的时候,会同时涉及到一点脚本的开发基础.在游戏,电影和动画中,都有一个渲染的帧率,电影是24帧/s,游戏大概是30帧/s(当然也有60帧/s的)。在unity里面1秒钟,Update方法执行了30次。1秒钟有30帧,帧与帧之所消耗的时间是不一样的,那么我如何知道上一帧用了多少时间?Time.deltaTime就是为了解决这个问题。

m0_58367586的博客 7658

LeetCode刷题笔记(Java实现)-- 21. 合并两个有序链表

题目难度: Easy 题目要求: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 如图: 题目分析: 方法一:递归 首先排除特殊情况,即若list1为null,就直接返回list2,若list2为空,就直接返回list1。 利用merg函数,若list1的当前节点比list2的当前节点小,则将ist1的当前节点写入结果,然后递归地决定下一个返回的节点。 代码: //递归 class Solution { public ListNode mergeT

qq_44392658的博客 643

物联网开发131 - Micropython ESP32 C3连接TB6600驱动42BYGH39步进电机

如何使用合宙ESP32 C3连接TB6600驱动42BYGH39步进电机,实现控制步进电机正反转和旋转指定角度等

zhusongziye的博客 2371

Java题目详解——LeetCode21.合并两个有序链表

首先我们可以新建一个新链表,然后同时循环遍历list1和list2,因为他们是两条升序链表,所以在循环中可以通过比较这两条链表的结点元素的大小,将较小的尾插至新链表中,当其中一条链表遍历完时,将另一条链表剩下的结点全部接到新链表后面即可。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]

lil_ghost_的博客 1051

别再手动调时间了!用Windows自带的tzutil命令,1分钟搞定时区错误

本文介绍了如何使用Windows自带的tzutil命令快速解决时区错误问题。通过简单的命令行操作,用户可以一键切换时区、查看全球时区代码库,并实现自动化时区同步。相比传统GUI设置,tzutil更可靠且高效,特别适合企业环境批量部署。

weixin_42531494的博客 314

当启动容器的时候提示:exec format error?如何解决问题

Docker容器出现"exec format error"的主要原因是架构不兼容(如ARM设备运行x86镜像)。解决方案包括:1)匹配镜像与宿主机架构;2)构建时指定平台;3)安装QEMU模拟器;4)修复文件权限和格式;5)验证基础镜像兼容性。排查流程应从检查架构匹配开始,逐步验证权限、解释器和换行符等问题。建议优先使用多架构镜像,构建时明确指定平台,并使用buildx工具生成多平台镜像。调试时可进入容器手动验证文件格式和兼容性。

weixin_39291964的博客 2718

LeetCode :21. 合并两个有序链表(Java)

LeetCode :21. 合并两个有序链表(Java),数据结构与算法

好好学习 672

第154章 点云大规模并行处理(GPU加速)

优化点云处理✨ 使用。

yumeiguo的博客 374

LeetCode:21. 合并两个有序链表

本文介绍了合并两个有序链表的两种解法:双指针法和递归法。双指针法通过创建新链表,比较两个链表节点值大小依次连接,使用pre指针维护新链表。递归法则通过比较节点值,在递归过程中将较小节点连接到后续递归结果上。两种方法时间复杂度均为O(n),空间复杂度分别为O(1)和O(n)。文章推荐参考"腐烂的橘子"和"Krahets"的题解以获得更直观理解。

2303_80876582的博客 68

【STM32 CubeMX】I2C中断方式与DMA方式

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)通信协议的实现可以采用中断方式或DMA(Direct Memory Access)方式。中断方式通过触发中断来处理数据传输,而DMA方式则利用直接内存访问技术来实现数据传输,减轻了CPU的负担。在选择I2C通信方式时,开发者需要根据具体的应用需求和性能要求来选择合适的方式。STM32 CubeMX提供了图形化配置工具,使得配置I2C通信方式变得更加便捷。

m0_62599305的博客 7744

Centos 7 Linux 安装 JDK 8:下载、安装、配置环境变量、验证

本文详细介绍了在 CentOS 7 系统上手动安装 JDK 8 的完整流程,包括环境准备、JDK 安装包下载与上传、解压安装、配置全局环境变量,以及最终的验证步骤。适用于使用 VMware 虚拟机、云服务器或物理机的 CentOS 7 用户,操作清晰、步骤完整,帮助开发者快速搭建 Java 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2579

LeetCode-21. 合并两个有序链表(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 1252

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode刷题之合并两个有序链表

return l1;return l1;

我的树洞 3096

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

力扣经典150题第五十八题:合并两个有序链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。本题可以通过递归或迭代的方式合并两个有序链表。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 2万+

计算机控制技术及应用

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

【经典算法】LeetCode 21:合并两个有序链表Java/C/Python3实现含注释说明,Easy)

递归和迭代都可以用来解决将两个有序链表合并的问题。递归解法迭代解法优点简洁,易于理解和实现不涉及函数递归调用,避免递归开销和栈溢出问题缺点可能产生多个函数调用,涉及函数调用开销和栈溢出问题需要使用额外变量保存当前节点,增加代码复杂性时间复杂度O(m+n),其中m和n分别是两个链表的长度O(m+n),其中m和n分别是两个链表的长度空间复杂度O(m+n),其中m和n分别是两个链表的长度O(1)在实际应用中,如果链表较长,特别是超过系统栈的容量,采用迭代解法更为安全。

2101

Java实现 LeetCode 21 合并两个有序链表

21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-...

南 墙 1万+

力扣最热一百题——合并两个有序链表

常规有坑题,新手也能学会!!!

WenJGo的博客 1534

【leetcode刷题】6.合并有序链表——Java版

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

公号:一条coding 1万+

【LeetCode-21】合并两个有序链表

【LeetCode-21】合并两个有序链表,本文旨在解决“合并两个升序链表”的问题。我们将从以下几个方面展开:解题思路:分析问题的核心逻辑,选择最优解法。代码实现:使用Java语言编写完整的解决方案,并对每一行代码进行详细注释。案例执行过程:通过具体输入输出案例,逐步演示代码执行过程。图示说明:用直观的图示展示链表合并的过程。优化与总结:总结算法的时间复杂度和空间复杂度,并提出可能的优化方向。

qq_44530108的博客 1166

LeetCode 经典题:“合并两个有序链表”

合并两个有序链表” 这道简单题通过迭代和递归两种方法为我们展示了不同的解题思路。迭代法直观易懂,适合初学者理解链表的操作和构建过程;递归法代码简洁,体现了递归思想在链表问题中的应用。在实际编程中,我们可以根据具体情况选择合适的方法。希望通过这篇博客,你能对链表的操作和算法有更深入的理解。

jukuya的博客 1060

LeetCode 21. 合并两个有序链表 java

LeetCode 21. 合并两个有序链表 java 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 : 输入:1-&gt;2-&gt;4, 1-&gt;3-&gt;4 输出:1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4 JAVA 代码: class Solution { public ListNode mergeTw...

lele的专栏 520

LeetCode高频题21. 合并两个有序链表

1)merge最简单的就是链表转数组,然后合并,外部排序,很容易。 2)实际上还有更简单的就是4个指针,同时控制往下走就完事 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。......

weixin_46838716的博客 856

java合并两个有序链表_【Leetcode刷题实录】合并两个有序链表

【Leetcode刷题实录】合并两个有序链表生命不息,折腾不止Hello,大家好!这是LeetCode刷题实录的第一期,今天的这道题目是合并两个有序链表,在LeetCode中是第二十一题,欢迎大家在看完题解以后直接去上手做一下,毕竟看的再多也不如自己去实操一下,可能有些同学在在做这道题之前,并不知道链表这种数据结构是什么样子,在这先给大家介绍一下什么是链表。链表大致可以分为单链表,双向链表,循环链...

weixin_36004568的博客 482

LeetCode刷题---21.合并两个有序链表(双指针)

大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第17篇文章,主要讲解是LeetCode21.合并两个有序链表(双指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。以上就是今天要讲的内容,这一题还是比较简单的,一看到这题的时候就立马想到同时遍历两个链表,然后把其中一个链表当做返回参数,让第二个链表的节点往里面插入即可。

JMFive的博客 1070
上一篇: 牛客网原题 输入一个链表,输出该链表中倒数第k个结点。(JAVA解决)
下一篇: 网络初学笔记(一)
KILLBILLKILLING
博客等级 码龄8年 3粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值