算法:合并两个有序链表21. Merge Two Sorted Lists
LeetCode全集请参考:LeetCode Github 大全
题目
21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists.
Example 1:
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]
Example 2:
Input: l1 = [], l2 = []
Output: []
Example 3:
Input: l1 = [], l2 = [0]
Output: [0]
Constraints:
The number of nodes in both lists is in the range [0, 50].
-100 <= Node.val <= 100
Both l1 and l2 are sorted in non-decreasing order.
递归解法,机器思考方式
倒序拼接,把最大的结果链表先返回,然后逐个拼接次大的。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {// check edgeif (l1 == null) {return l2;}if (l2 == null) {return l1;}if (l1.val < l2.val) {l1.next = mergeTwoLists(l1.next, l2);return l1;} else {l2.next = mergeTwoLists(l1, l2.next);return l2;}}
}
遍历思维
- 创建一个结果链表result;
- 依次对比链表l1, l2,把小的node加入结果中,并指向下一个;
- 记得首尾:把还不为空的链表加入到结果链表的尾部;
- 开始的时候,可以检查边界,直接退出、
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {// check edgeif (l1 == null) {return l2;}if (l2 == null) {return l1;}ListNode result = new ListNode(-1);ListNode dummy = result;while (l1 != null && l2 != null) {if (l1.val < l2.val) {dummy.next = l1;l1 = l1.next;} else {dummy.next = l2;l2 = l2.next;}dummy = dummy.next;}// check not null;dummy.next = (l1 != null ? l1 : l2);return result.next;}
}
算法:合并两个有序链表21. Merge Two Sorted Lists相关推荐
- C#LeetCode刷题之#21-合并两个有序链表(Merge Two Sorted Lists)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3818 访问. 将两个有序链表合并为一个新的有序链表并返回.新链表 ...
- LeetCode 之 JavaScript 解答第23题 —— 合并K个有序链表(Merge K Sorted Lists)
Time:2019/4/10 Title: Merge K Sorted Lists Difficulty: Difficulty Author: 小鹿 题目:Merge K Sorted Lists ...
- [PHP] 算法-合并两个有序链表为一个有序链表的PHP实现
合并两个有序的链表为一个有序的链表: 类似归并排序中合并两个数组的部分 1.遍历链表1和链表2,比较链表1和2中的元素大小 2.如果链表1结点大于链表2的结点,该结点放入第三方链表 3.链表1往下走一 ...
- 算法----合并两个有序链表
题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] ...
- 算法--合并两个有序链表
有两种方法,迭代和递归. 迭代: //不带头结点 Node * Merge(Node *head1 , Node *head2){//判空if ( head1 == NULL)return head2 ...
- 【每日一算法】 合并两个有序链表
微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...
- leetcode 21 java_LeetCode 21. 合并两个有序链表
LeetCode 21. 合并两个有序链表 题目 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-> ...
- LeetCode 21. 合并两个有序链表(链表)
上一篇博客:LeetCode 20. 有效的括号(栈.字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...
- 【LeetCode】21、合并两个有序链表
21.合并两个有序链表 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例1: 输入:l1 = [1,2,4], l2 = [1,3,4] ...
- LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版
LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...
最新文章
- AlarmManager与PendingIntent的联合使用(一)
- MySQL数据库恢复(LOAD DATA)
- 如何评价英伟达9月2日凌晨发布的30系列新显卡?
- hive 2.1.1 mysql_Hive2.1.1集群搭建
- mysql哪一款好用_用了这么多年MySql,这些好习惯你用过哪些
- [转]Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
- 网站锁定php文件命令,PHP文件的锁定机制
- LaTeX 消除字体错误 Size substitutions with differences (Font)	up to 0.41063pt have occurred.
- oracle instant client package,Oracle数据库之Oracle Instant Client的安装和使用
- 绿联网卡转接mac设置_绿联外置网卡Mac os 11.0 Big Sur驱动方案来了
- android ios 对比 组件_Android、iOS历史版本对比
- 使用halcon实现3维点云物体与模型的匹配并显示差异
- 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
- 输出每个数字对应的拼音
- 虚幻动画蓝图按层级的动画混合(layered)
- 以匠心正道,以决心致远:毫末智行的自动驾驶之路
- MYSQL 安装步骤
- delphi ado 连接mysql_DELPHI ADO连接数据库
- python大学生生活信息交互平台的设计与实现毕业设计源码031315
- 论文阅读+实战:SimGNN:A Neural Network Approach to Fast Graph Similarity Computation
热门文章
- php 深入,深入PHP解耦的三重境界(浅谈服务容器)
- 一定质量的封闭气体被压缩后_详解螺杆压缩机工作原理及结构
- 发票管理软件_企业为什么需要采购管理软件?
- C#+TaskScheduler(定时任务)实现定时自动下载
- eclipse生成ant build.xml打war包
- Python六大开源框架对比:Web2py略胜一筹(转)
- angular1的复选框指令--checklistModel
- Linux下出现command not found的解决办法
- LINUX 查看分区UUID的两种方法
- 【Python之旅】第四篇(一):Python装饰器