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

news/2024/4/20 20:06:18/文章来源:https://blog.csdn.net/weixin_44562957/article/details/130000520

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

示例 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.* public 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 list1, ListNode list2) {ListNode dummy = null, end = null;if (list1 == null && list2 == null){return dummy;} else{dummy = new ListNode(0);end = dummy;}// if (list1 == null && list2 != null) return list2;// if (list1 != null && list2 == null) return list1;while (list1 != null && list2 != null){if (list1.val <= list2.val){end.next = list1;end = end.next;list1 = list1.next;}else{end.next = list2;end = end.next;list2 = list2.next;}}if (list1 == null) end.next = list2;if (list2 == null) end.next = list1;return dummy.next;}
}// 没有用递归,用的笨办法,创建了一个新的链表记录合并结果

递归解法:

/*** Definition for singly-linked list.* public 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) {if (l1 == null) {return l2;} else if (l2 == null) {return l1;} else if (l1.val < l2.val) {l1.next = mergeTwoLists(l1.next, l2);return l1;} else {l2.next = mergeTwoLists(l1, l2.next);return l2;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_282528.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

得到Class类的几种方式

package com.kuang.reflection; //测试Class类的创建方式有哪些 public class test03 {public static void main(String[] args) throws ClassNotFoundException {Person person new Student();System.out.println("这个人是:"person.name);//方式一&#xff1a;通过…

微信小程序开发 | 微信小程序开发基础

微信小程序开发基础2.1【案例1】比较数字大小2.1.1 案例分析2.1.2 创建项目2.1.3 页面组件2.1.4 页面样式2.1.5 配置文件2.1.6 页面逻辑2.1.7 注册程序2.1.8 实现比较功能2.2【案例2】调查问卷2.2.1 案例分析2.2.2 编写表单页面2.2.3 服务器数据交互2.2.4 表单数据绑定2.3【案例…

设计模式-结构型模式-外观模式

外观模式介绍 外观模式( Facade Pattern)&#xff0c;也叫门面模式, 外观模式的原始定义是&#xff1a;为子系统中的一组接口提供统一的接口。它定义了一个更高级别的接口&#xff0c;使子系统更易于使用。 外观模式&#xff0c;是一种通过为多个复杂的子系统提供一个一致的接…

【算法】禁忌算法+TSP问题 python代码

目录一、禁忌算法的概念二、相关名词解释1、禁忌对象&#xff08;Tabu Object&#xff0c;TO&#xff09;2、禁忌表&#xff08;Tabu List&#xff0c;TL&#xff09;3、禁忌期限&#xff08;Tabu Tenure&#xff0c;TT&#xff09;4、藐视准则&#xff08;Aspiration Criteria…

第19届高级数据挖掘与应用国际会议(ADMA‘23)

主页: https://adma2023.uqcloud.net/. 我们非常荣幸地介绍第19届高级数据挖掘与应用国际会议&#xff08;ADMA’23&#xff09;。2023年标志着国际高级数据挖掘与应用会议&#xff08;ADMA’23&#xff09;的19周年&#xff0c;会议将于2023年8月21日至23日在中国沈阳举行。我…

多态(C++)

多态多态的概念概念多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数重写的两个例外C11override和final重载&#xff0c;覆盖&#xff0c;隐藏的对比抽象类概念接口继承和实现继承多态的原理虚函数表多态的原理动态绑定与静态绑定单继承和多继承关系中的虚函数表单继承…

QT完善登录界面Ⅱ

功能添加&#xff1a; 1.弹窗提示 2.页面跳转 信号的发送&#xff0c;槽函数执行 form.hpublic slots:void mySlot(); //槽函数widget.h signals:void mySignal(QString e); //自定义属于自己的信号函数//widget.cpp #include "widget.h" #include "ui_widge…

Java初阶 ( String 类)

文章目录一、String 类的基础概念1.1 Java 中的字符串1.2 字符串的构造二、String 类的进阶概念2.1 求字符串的长度2.2 isEmpty()2.3 字符串的比较2.4 字符串的查找2.5 字符串的转换2.6 字符串的替换2.6 字符串的拆分2.7 字符串的截取2.8 去掉字符串的左右空白字符2.9 StringBu…

Leetcode.226 翻转二叉树

题目链接 Leetcode.226 翻转二叉树 easy 题目描述 给你一棵二叉树的根节点 root&#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;r…

C++对象模型与this指针

一、成员变量与成员函数分开存储 1、在C中&#xff0c;类内的成员变量和成员函数分开存储 首先&#xff0c;对于一个空对象&#xff0c;占用内存空间为1 class person {};void test01() {person p;cout << sizeof(p) << endl; } 因为C编译器给每个空对象分配1个字…

【juc】wait和notify原理

目录一、monitor锁结构图二、说明一、monitor锁结构图 二、说明 1.线程1一开始持有对象A的monitor锁&#xff0c;即monitor中的owner指向线程1 2.线程1在执行的过程中发现条件a不满足执行不下去了&#xff0c;此时线程1可以调用wait方法&#xff0c;那么线程1就进入waitset进行…

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…

.net C#反编译及脱壳常用工具--小结

1、Reflector --微软自家工具--推荐 Reflector是最为流行的.Net反编译工具。Reflector是由微软员工Lutz Roeder编写的免费程序。Reflector的出现使NET程序员眼前豁然开朗&#xff0c;因为这个免费工具可以将NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转…

五、页面切割技术,实现工作台

页面切割技术 1.<frameset>和<frame> <frameset>:用来切割页面 <frameset cols"20%,60%,20%"> 竖着把窗口切三部分 <frameset rows"20%,60%,20%"> 横着把窗口切三部分 <frame>&#xff1a;用来显示页面 <frame …

三星公司因ChatGPT造成数据泄露?

作者丨黑蛋 ChatGPT大家最近应该都听过很多&#xff0c;关于各种ChatGPT消息铺天盖地&#xff0c;将会取代大部分人工&#xff0c;ChatGPT代替创作&#xff0c;绘画&#xff0c;很多公司因此裁员等消息多不胜数&#xff0c;甚至短短几个月&#xff0c;ChatGPT升级版ChatGPT4就…

无需服务器免费上线你的静态网页

无需服务器免费上线你的静态网页:https://s.qiniu.com/bmaYJf

Keil 5 安装教程及简单使用【嵌入式系统】

Keil 5 安装教程【嵌入式系统】前言推荐说明keil5安装教程第一阶段&#xff1a;安装mdk第二阶段&#xff1a;激活mdk第三阶段&#xff1a;安装STM32芯片包第四阶段&#xff1a;安装C51单片机第五阶段&#xff1a;激活C51单片机keil 5的简单使用1建立新工程2创建新文件3.生成HEX…

华硕 ASUS-PRIME-B560M-A Intel Core i5-11400黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板ASUS-PRIME-B560M-A 处理器Intel Core i5-11400已驱动 内存16GB DDR4 3200 Mhz已驱动 硬盘Western Digital Black SN750 500GB已驱动 显卡SAPPH…

社区团购是什么?打破传统消费模式的新选择

社区团购作为一种新兴的消费模式&#xff0c;已经成为了越来越多人的选择。在社区团购中&#xff0c;商家可以通过团购的方式向消费者提供优惠的价格和服务&#xff0c;同时也可以借助社区团购来扩大销售渠道和提高品牌知名度。本文将以一家小型便利店的社区团购为例&#xff0…