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

示例:

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

思路1:双指针法

/*** 合并两个有序链表(默认为升序)* 双指针法* @param l1* @param l2* @return*/public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1 == null) {return l2;}if(l2 == null) {return l1;}ListNode head = new ListNode(-1);ListNode index = head;while(l1!=null && l2!=null) {if(l1.val>l2.val) {index.next = l2;l2=l2.next;}else {index.next = l1;l1 = l1.next;}index = index.next;}if(l1!=null) {while (l1!=null) {index.next = l1;l1 = l1.next;index = index.next;}}if(l2!=null) {while (l2!=null) {index.next = l2;l2 = l2.next;index = index.next;}}return head.next;}

思路1代码优化版(代码短了,耗时反而增加了,应该是if else的判断多了导致的)

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1 == null) {return l2;}if(l2 == null) {return l1;}ListNode head = new ListNode(-1);ListNode index = head;while(l1!=null || l2!=null) {if(l1 !=null && l2!=null) {if(l1.val>l2.val) {index.next = l2;l2=l2.next;}else {index.next = l1;l1 = l1.next;}}else if (l1 != null && l2==null) {index.next = l1;l1 = l1.next;}else if (l1 == null && l2!=null) {index.next = l2;l2=l2.next;}index = index.next;}return head.next;}

思路1优化版,优化了时间

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1 == null) {return l2;}if(l2 == null) {return l1;}ListNode head = new ListNode(-1);ListNode index = head;while(l1!=null && l2!=null) {if(l1.val>l2.val) {index.next = l2;l2=l2.next;}else {index.next = l1;l1 = l1.next;}index = index.next;}//任一为空,直接链接另一个链表if(l1!=null) {index.next=l1;}else {index.next=l2;}return head.next;}

2019-03-21-算法-进化(合并两个有序链表)相关推荐

  1. 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表

    我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目分析 第21题:合并两个有序链表 将两个有序链表合并 ...

  2. 【每日一算法】 合并两个有序链表

    微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...

  3. 算法:合并两个有序链表

    题目 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...

  4. leetcode第21题: 合并两个有序链表

    题目描述: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3 ...

  5. LeetCode第 21 题:合并两个有序链表(C++)

    leetcode链接 第一种方法(借助其他标准库容器) 遍历两个链表将元素均存入容器中(例如vector,或者multiset会更好吗?),调用泛型算法sort进行元素排序,最后在新建链表将排序好的元 ...

  6. leetcode算法题--合并两个有序链表

    原题链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/ ListNode* mergeTwoLists(ListNode* l1, ...

  7. 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表

    点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...

  8. 《LeetCode力扣练习》第21题 合并两个有序链表 Java

    <LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...

  9. leetcode 21 java_LeetCode 21. 合并两个有序链表

    LeetCode 21. 合并两个有序链表 题目 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-> ...

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

    上一篇博客:LeetCode 20. 有效的括号(栈.字符串)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...

最新文章

  1. 总线的性能指标,包括总线频率,宽度,和带宽(微机接口技术)
  2. Unity3D专访——真正的面试
  3. (译)删除未使用的前端代码
  4. python知识:numpy的维度之变
  5. 手持终端可以根据行业的功能要求进行定制
  6. 改变世界的5大常数,学过数学的人,这一辈子都不会忘记!
  7. ajax 接收json数据的进一步了解
  8. java和vb.net des加密_vb.net DES加密与解密
  9. JEPF 3.1.3 发布,我们的软件机床
  10. OpenDDS环境搭建-Windows 10
  11. 《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
  12. 佳能Canon PIXMA MP568 一体机驱动
  13. uni-app APP横屏和竖屏
  14. Word2016如何插入公式?Word2016插入公式方法
  15. 环境科学概论知识点总结
  16. 计算机正态分布随机数范围,正态分布随机数
  17. vivado程序固化到flash
  18. TIA protal与SCL从入门到精通(4)——软件单元使用
  19. Spring个人学习笔记
  20. Autodesk 开源 3D 打印机

热门文章

  1. 有一说一,确实。。 | 今日最佳
  2. 每日一笑 | 你知道你爸妈当年是怎么在一起的吗?
  3. AI催生新的工作机遇:5个未来会很吃香的岗位
  4. spark 连接mysql 命令_spark-submit命令包括mysql连接器
  5. oracle执行命令显示2,Oracle数据库执行脚本常用命令小结
  6. php生成vcf,详解PHP如何实现生成vcf vcard文件
  7. python find函数_Python 速学!不懂怎么入门python的小白看这篇就够了!
  8. C语言 time函数 开销,C语言: 函数调用的开销
  9. 如何在注册表里计算机用户名,可以通过注册表修改电脑的密码 ?怎么做的?
  10. 算法题目——多米诺骨牌问题(POJ-2663)