问题描述

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

限制:

0 <= 链表长度 <= 1000

解题思路

本题与普通数组的归并十分相似,根据题目描述,两个链表l1,l2是递增的,因此很容易想到使用双指针l1和l2来遍历两个链表,根据双指针所指向的l1.val和l2.val的大小关系确定添加结点的顺序,当l1.val更小时,合并的链表中添加l1中的结点,当l2.val更小时,合并的链表中添加l2中的结点。当满足l1和l2有一个链表遍历完了之后,那么另外一个没有遍历完的链表就直接连接即可(注意,这里与数组的归并算法不同,数组中剩余一个链表需要一个一个的拷贝到新数组中,而链表直接用next指针指向即可)。
注意:这里有一个关键点是对于新的合并的链表,一定要定义一个不带任何数据的头结点

实现代码

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode head=new ListNode(-1);         //定义头结点ListNode p=l1;ListNode q=l2;                  //定义双指针ListNode r=head;                //定义新的链表的指针      while(p!=null && q!=null){      //当其中一个链表遍历完了,退出循环if(p.val<q.val){            //双指针选择最小的元素添加到新链表中r.next=p;p=p.next;}else{r.next=q;q=q.next;}System.out.println(r.val);r=r.next;}if(p!=null){                    //当还有一个链表没有遍历完时,直接连接即可。r.next=p;}if(q!=null){r.next=q;}return head.next;}

剑指offer25-合并两个排序的链表相关推荐

  1. 剑指Offer25 合并两个排序的链表

    剑指Offer 25. 合并两个排序的链表 剑指Offer 25. 合并两个排序的链表 这题是一道简单题,如果学习了数据结构当中的链表的话,可以很轻松就想出解题过程: /*** Definition ...

  2. 剑指 Offer合并两个排序的链表

    题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...

  3. 剑指Offer——合并两个排序的链表

    1.题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.代码实现 1 package com.baozi.offer; 2 3 /** 4 * ...

  4. 剑指offer-17.合并两个排序的链表

    https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&tqId=11169&tPage= ...

  5. java listnode 合并链表_剑指offer:合并两个排序的链表(Java)

    1.问题描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2.思路 方法1:非递归方法 根据题目这个很类似排序中的外排过程,两个数组分别排好序,然后再 ...

  6. python数据结构剑指offer-合并两个排序的链表

    合并两个排序的链表 描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的. 数据范围: 0 \le n \le 10000≤n≤1000,-1000 \le ...

  7. 剑指offer 合并2个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解决方案: 用递归的思想. /* public class ListNode {int val; ...

  8. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

最新文章

  1. mongodb的读写分离
  2. 成功解决TypeError: __init__() got an unexpected keyword argument 'indices'
  3. mysql partition 性能_通过分区(Partition)提升MySQL性能
  4. vue图片点击超链接_10秒钟,告别ppt中难看的超链接
  5. Nginx配置文件conf详解
  6. assert.h库学习
  7. [转载] windows下python包的导入方法
  8. 导入虚拟机vmware,此主机支持Intel VT-x,但Intel VT-x处于禁用状态和黑屏
  9. Java中什么不是线程状态_并发基础(四) java中线程的状态
  10. 华泰证券人工智能系列(1):人工智能选股框架及经典算法简介
  11. web微信授权登陆-配置篇
  12. openssl学习之ccm,gcm 模式
  13. 同方知网阅读器_汪总对峙众粉丝!透露为何加入凌烟阁?澄清塌哥,汪总平台号 一个办公室?大姐刺激汪总退网?...
  14. 京东Deco 智能代码体验版正式上线啦,快来体验设计稿一键生成代码~
  15. shell 脚本学习
  16. 雷电连接不到android studio,android studio连接雷电模拟器 【AS 模拟器】
  17. 请打开正确的提问方式
  18. [BZOJ3441] 乌鸦喝水
  19. 凯立德car 3.0 夏季版 升级过程(备忘)
  20. 光纤收发器的原理及应用_光纤收发器工作原理 - 光纤收发器工作原理及技术详解(分类,使用方法及接线图)...

热门文章

  1. 坑了多少人?这就是乐视网负债总规模!
  2. 华为已经没落的一个手机系列 无人问津甚至有点多余
  3. IOS的IPV6测试
  4. ZXing生成多种不同样式的二维码
  5. python gil锁_python GIL锁
  6. python scheduler 定时执行_python使用apscheduler做定时任务的管理
  7. pandas 读取csv_「技巧」Pandas常见的性能优化方法
  8. 【算法】剑指 Offer 48. 最长不含重复字符的子字符串
  9. 【KMP】KMP 字符串匹配算法
  10. 【Flink】Flink 写入 kafka 报错 The server disconnected before a response was received