2019-03-21-算法-进化(合并两个有序链表)
题目描述
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入: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-算法-进化(合并两个有序链表)相关推荐
- 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表
我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目分析 第21题:合并两个有序链表 将两个有序链表合并 ...
- 【每日一算法】 合并两个有序链表
微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...
- 算法:合并两个有序链表
题目 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...
- leetcode第21题: 合并两个有序链表
题目描述: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3 ...
- LeetCode第 21 题:合并两个有序链表(C++)
leetcode链接 第一种方法(借助其他标准库容器) 遍历两个链表将元素均存入容器中(例如vector,或者multiset会更好吗?),调用泛型算法sort进行元素排序,最后在新建链表将排序好的元 ...
- leetcode算法题--合并两个有序链表
原题链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/ ListNode* mergeTwoLists(ListNode* l1, ...
- 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表
点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...
- 《LeetCode力扣练习》第21题 合并两个有序链表 Java
<LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...
- leetcode 21 java_LeetCode 21. 合并两个有序链表
LeetCode 21. 合并两个有序链表 题目 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-> ...
- LeetCode 21. 合并两个有序链表(链表)
上一篇博客:LeetCode 20. 有效的括号(栈.字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...
最新文章
- 总线的性能指标,包括总线频率,宽度,和带宽(微机接口技术)
- Unity3D专访——真正的面试
- (译)删除未使用的前端代码
- python知识:numpy的维度之变
- 手持终端可以根据行业的功能要求进行定制
- 改变世界的5大常数,学过数学的人,这一辈子都不会忘记!
- ajax 接收json数据的进一步了解
- java和vb.net des加密_vb.net DES加密与解密
- JEPF 3.1.3 发布,我们的软件机床
- OpenDDS环境搭建-Windows 10
- 《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
- 佳能Canon PIXMA MP568 一体机驱动
- uni-app APP横屏和竖屏
- Word2016如何插入公式?Word2016插入公式方法
- 环境科学概论知识点总结
- 计算机正态分布随机数范围,正态分布随机数
- vivado程序固化到flash
- TIA protal与SCL从入门到精通(4)——软件单元使用
- Spring个人学习笔记
- Autodesk 开源 3D 打印机
热门文章
- 有一说一,确实。。 | 今日最佳
- 每日一笑 | 你知道你爸妈当年是怎么在一起的吗?
- AI催生新的工作机遇:5个未来会很吃香的岗位
- spark 连接mysql 命令_spark-submit命令包括mysql连接器
- oracle执行命令显示2,Oracle数据库执行脚本常用命令小结
- php生成vcf,详解PHP如何实现生成vcf vcard文件
- python find函数_Python 速学!不懂怎么入门python的小白看这篇就够了!
- C语言 time函数 开销,C语言: 函数调用的开销
- 如何在注册表里计算机用户名,可以通过注册表修改电脑的密码 ?怎么做的?
- 算法题目——多米诺骨牌问题(POJ-2663)