当前位置: 首页 > news >正文

2025年- H32-Lc140 --21. 合并两个有序链表--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)定义一个虚拟的头节点,然后pre指针刚开始赋值要等于这个虚拟头节点
(2)比较l1和l2值得大小,如果l1小,就把指针指向l1(pre.next=l1),同时list指针要向后移list1=list1.next;如果l2小,就把指针指向l2(pre.next=l2);
(3) 指针后移pre=pre.next;
(4)如果链表的大小不一样。比如l1null,说明l2还有元素,把此时的pre指针指向l2,比如pre.next=l2。比如l2null,说明l1还有元素,把此时的pre指针指向l1,比如pre.next=l1。

3.代码实现

class ListNode{int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}
public class H21 {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {//1.创建一个虚拟头节点,虚拟头节点这边可以是任意值ListNode dummyhead=new ListNode(-1);//2.设置一个pre指针,刚开始从在虚拟头节点上ListNode pre=dummyhead;//3.因为是两个有序链表合并,最后组合成一个有序链表//循环终止条件是list1=null和list2=null就停止变量while(list1!=null&&list2!=null){//4.开始比较两个链表的值if(list1.val<=list2.val){pre.next=list1;//因为list1的值比较小,所以pre的next指针直接指向list1list1=list1.next;//继续移动list1的指针}else{pre.next=list2;list2=list2.next;//继续移动list2的指针}//5.比较完list1和list2的大小之后,pre指针要继续后移(在新组成整个链上移动)。pre=pre.next;}//4. 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可if(list1==null)//l1为空,但是l2还有值{pre.next=list2;//将此时l1尾部pre指针指向list2的剩余节点}else{pre.next=list1;}return dummyhead.next;}public static void main(String[] args){H21 test=new H21();//创建第一个链表并且赋值ListNode node3=new ListNode(4,null);ListNode node2=new ListNode(2,node3);ListNode head=new ListNode(1,node2);//创建第二个链表并且赋值ListNode node3_l2=new ListNode(3,null);ListNode node2_l2=new ListNode(2,node3_l2);ListNode head_l2=new ListNode(1,node2_l2);ListNode res=test.mergeTwoLists(head,head_l2);System.out.print("输出合并两个有序链表的结果:");while(res!=null){System.out.print(res.val);if(res.next!=null){System.out.print("->");}//res要继续往后移res=res.next;}}}
http://www.xdnf.cn/news/529021.html

相关文章:

  • BM25(Best Matching 25)介绍与使用
  • BC27 计算球体的体积
  • hexo博客搭建使用
  • 数据库-oracle-包-视图传参
  • upload靶场1-5关
  • 【MYSQL】基本查询,表的增删查改
  • 云原生攻防1(基础介绍)
  • Unity预制体变体(Prefab Variants)、接口(Interface)、抽象类(Abstract Class)、枚举(Enumeration)
  • 如何快速更换电脑浏览器ip:教程与注意事项
  • Seata源码—6.Seata AT模式的数据源代理二
  • leetcode 74. Search a 2D Matrix
  • SQL注入——Sqlmap工具使用
  • 实景VR展厅制作流程与众趣科技实景VR展厅应用
  • Assistants API
  • upload-labs靶场通关详解:第10关
  • 项目QT+ffmpeg+rtsp(三)——延迟巨低的项目+双屏显示
  • FPGA 串口_波特率计算
  • 使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战
  • [学习]POSIX消息队列的原理与案例分析(完整示例代码)
  • 循环神经网络:揭秘RNN的核心与应用
  • 设计模式的原理及深入解析
  • 人工智能100问☞第27问:神经网络与贝叶斯网络的关系?
  • Spring Boot 的高级特性与经典的设计模式应用
  • Flink 非确定有限自动机NFA
  • reserve学习笔记(花指令)
  • 用Python构建学生成绩管理系统的基本方案
  • 系统架构设计师考前冲刺笔记-第3章-软件架构设计
  • 《JVM如何判断一个对象可以被回收?图文详解GC Root算法》
  • Windows 下 Qt 项目配置 FFmpeg 简明指南
  • 使用docker——10分钟内 完成一个高可用的 MongoDB 副本集部署