合并两个有序链表(Java)
解题思路:
第一步:先设置一个虚拟节点(傀儡节点)newNode,不做任何的数据处理。它的作用就是把两个链表中最小的节点放到它之后。
第二步:设置两个链表的头结点分别为head1和head2。然后比较这俩谁小,把小的往newNode后串。
第三步:当其中一个链表走完后,就把另一个链表剩下的节点直接串上,使其tmp.next=head1/head2。
图解:
完整代码如下:
//合并两个有序链表public static Node mergeTwoLists(Node head1,Node head2){Node newNode=new Node(-1); //虚拟节点,数据不具备意义Node tmp=newNode;while (head1!=null&&head2!=null){if (head1.val< head2.val){tmp.next=head1;tmp=tmp.next;head1=head1.next;}else{tmp.next=head2;tmp=tmp.next;head2=head2.next;}}if (head1!=null){tmp.next=head1;}if (head2!=null){tmp.next=head2;}return newNode.next;}public static void main(String[] args) {SingleLinkedList singleLinkedList1=new SingleLinkedList();singleLinkedList1.addLast(2);singleLinkedList1.addLast(7);singleLinkedList1.addLast(8);SingleLinkedList singleLinkedList2=new SingleLinkedList();singleLinkedList2.addLast(1);singleLinkedList2.addLast(5);singleLinkedList2.addLast(9);singleLinkedList2.addLast(12);singleLinkedList2.addLast(21);Node ret=mergeTwoLists(singleLinkedList1.head,singleLinkedList2.head);singleLinkedList1.myToString(ret);
代码里用到的尾插法、打印链表在前面的实现一个简单的单向链表 里有提到,但是打印链表需要重载一个方法,原来的打印链表是从头结点开始的,但是在这里我们设置了一个傀儡节点,新节点。我们需要从新节点开始打印,重载的打印链表代码如下:
public void myToString(Node newNode){ //打印链表里的元素Node cur=newNode;while (cur!=null){ System.out.print(cur.val+" "); cur=cur.next;}}
main函数如下:
public static void main(String[] args) {SingleLinkedList singleLinkedList1=new SingleLinkedList();singleLinkedList1.addLast(2);singleLinkedList1.addLast(7);singleLinkedList1.addLast(8);SingleLinkedList singleLinkedList2=new SingleLinkedList();singleLinkedList2.addLast(1);singleLinkedList2.addLast(5);singleLinkedList2.addLast(9);singleLinkedList2.addLast(12);singleLinkedList2.addLast(21);Node ret=mergeTwoLists(singleLinkedList1.head,singleLinkedList2.head);singleLinkedList1.myToString(ret);}//运行结果:
//2 5 7 8 9 12 21
合并两个有序链表(Java)相关推荐
- 《LeetCode力扣练习》第21题 合并两个有序链表 Java
<LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...
- 【Java】leetCode 21 合并两个有序链表
题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...
- java合并两个有序链表_JS实现的合并两个有序链表算法示例
本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1-> ...
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- 【LeetCode】【HOT】21. 合并两个有序链表(递归)
[LeetCode][HOT 100]21. 合并两个有序链表 文章目录 [LeetCode][HOT 100]21. 合并两个有序链表 package hot;import java.util.Ar ...
- 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表
我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目分析 第21题:合并两个有序链表 将两个有序链表合并 ...
- 021合并两个有序链表
合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. C语言: /*** Definition for singly-linked lis ...
- 【每日一算法】 合并两个有序链表
微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...
- 合并两个有序链表分析
合并两个有序链表: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: l1 l2 输入:1->2->4, 1->3->4 ...
- 算法:合并两个有序链表
题目 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...
最新文章
- Socket编程之简单介绍
- 三星手机com.android.settings,三星手机恢复出厂设置方法【具体步骤】
- wince -- telnet登陆密码的取消
- php中mysql和mysqli_PHP中mysql和mysqli的区别
- html为什么未响应,Word2010总是未响应怎么办?
- python的递归为什么难理解,python - Python - 很难理解这个递归代码示例 - SO中文参考 - www.soinside.com...
- 基于机器视觉的铁片轮廓检测
- 如何看待部分985研究生不如本科生,只能去做软件测试?
- vue 路由参数变化,页面不刷新(数据不更新)解决方法
- php简单使用shmop函数创建共享内存减少服务器负载
- linux如何设置环境变量
- 数码单反相机与无反光镜相机。选择产品摄影解决方案
- ArcGIS与GIS知识:ARCGIS中坐标转换及地理坐标、投影坐标的定义以及投影分度带的划分
- nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法
- OptionError: ‘Pattern matched multiple keys‘
- QtCreator一键重命名
- 幂法求矩阵的最大特征值和对应特征向量
- html盒子整体向下移动,盒子上下左右居中方法全(持续更新中)
- 2021-05-31以及2021-06-01(从136开始) JAVA学习笔记
- ZYNQ PL采集AD7606数据PS LWIP发送
热门文章
- 新浪微博如何批量删除以前发过的微博
- 11-FreeSwitch-freeswitch架构
- nifi从入门到实战(保姆级教程)——环境篇
- 步进电机弯道加速度、起跳速度、单轴加速度设置方法
- 基于SpringBoot的在线问卷调查管理系统
- web端文字转语音播放的几种方式
- python操作cad的模块_利用python控制Autocad:pyautocad方式
- JAVA ftps设置_如何使用apache.commons.net.ftps配置客户端身份验证?
- Java实验输出希腊字母表
- 生物信息分析中的reads是什么