【力扣】21. 合并两个有序链表 <链表指针>

news/2024/11/8 17:09:52/

【力扣】21. 合并两个有序链表

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

示例1
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
在这里插入图片描述
示例 2
输入:l1 = [], l2 = []
输出:[]

示例 3
输入:l1 = [], l2 = [0]
输出:[0]

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

题解

链表指针:

class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val;this.next = next; }
}class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode dummyNode = new ListNode(-1);ListNode prev = dummyNode;while (l1 != null && l2 != null) {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 == null ? l2 : l1);return dummyNode.next;}
}

在这里插入图片描述
在这里插入图片描述

递归

// 合并两个有序链表,递归版本
private ListNode merge(ListNode l1, ListNode l2) {//递归的结束条件,如果 l1 和 l2 中有一个为空就返回if (l1 == null || l2 == null) {return (l1 == null) ? l2 : l1;}//如果 l1 的值 <=l2 的值,就继续递归,比较 l1.next 的值和 l2 的值//l1.next 和 l2 比较完后,会产生一个更小的节点 x,将 x 加到当前 l1 的后面if (l1.val <= l2.val) {l1.next = merge(l1.next, l2);return l1;}//如果 l1 的值 >l2 的值,就继续递归,比较 l1 的值和 l2.next 的值else {l2.next = merge(l1, l2.next);return l2;}
}

http://www.ppmy.cn/news/1007885.html

相关文章

关于java异常的整理

文章目录 一、异常分类二、throw、throws、try-catch-finally三、CglibAopProxy中对异常的处理4、关于UndeclaredThrowableException 一、异常分类 java异常层级结构 Throwable:所有异常的根接口 Error:严重错误,程序无法处理和恢复 例如VirtualMachineError,OOMError等 Excep…

ABP 后台任务生产者-消费者模式的实现逻辑

ABP 的后台任务是通过生产者-消费者模式来实现的。 在 ABP 中&#xff0c;生产者通过调用 IBackgroundJobManager 接口的 AddJobAsync 方法来添加后台任务&#xff0c;消费者则通过调用 IBackgroundJobExecuter 接口的 ExecuteAsync 方法来执行后台任务。当生产者添加一个后台…

Java阶段五Day21

Java阶段五Day21 文章目录 Java阶段五Day21问题解析rocketmq清空数据 linux学习背景什么是linux系统虚拟机介绍启动 虚拟机linux虚拟机网络的问题 linux系统的基础命令命令提示符命令格式pwd指令ls指令cd指令mkdirtouch指令cp指令rm指令mv指令cat指令tail指令 文本编辑器vim操作…

css position: sticky;实现上下粘性布局,中间区域滚动

sticky主要解决的问题 1、使用absolute和fixed中间区域需要定义高度2、使用absolute和fixed底部需要写padding-bottom 避免列表被遮挡住一部分&#xff08;底部是浮窗的时候&#xff0c;需要动态的现实隐藏&#xff09; <!DOCTYPE html> <html lang"en"&…

前端学习记录~2023.7.26~JavaScript重难点实例精讲~第3章 函数

第2章 引用数据类型 前言3.1 函数的定义与调用3.3.1 函数的定义&#xff08;1&#xff09;函数声明&#xff08;2&#xff09;函数表达式&#xff08;3&#xff09;Function()构造函数&#xff08;4&#xff09;函数表达式的应用场景&#xff08;5&#xff09;函数声明与函数表…

【深度学习】在 MNIST实现自动编码器实践教程

一、说明 自动编码器是一种无监督学习的神经网络模型&#xff0c;主要用于降维或特征提取。常见的自动编码器包括基本的单层自动编码器、深度自动编码器、卷积自动编码器和变分自动编码器等。 其中&#xff0c;基本的单层自动编码器由一个编码器和一个解码器组成&#xff0c;编…

Docker学习(二十四)报错速查手册

目录 一、This error may indicate that the docker daemon is not running 报错docker login 报错截图&#xff1a;原因分析&#xff1a;解决方案&#xff1a; 二、Get "https://harbor.xxx.cn/v2/": EOF 报错docker login 报错截图&#xff1a;原因分析&#xff1a…

基于 yolov8 的人体姿态评估

写在前面 工作中遇到&#xff0c;简单整理博文内容为使用预训练模型的一个预测 Demo测试图片来源与网络,如有侵权请告知理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停…