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;}}
}

遍历思维

  1. 创建一个结果链表result;
  2. 依次对比链表l1, l2,把小的node加入结果中,并指向下一个;
  3. 记得首尾:把还不为空的链表加入到结果链表的尾部;
  4. 开始的时候,可以检查边界,直接退出、
/*** 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相关推荐

  1. C#LeetCode刷题之#21-合并两个有序链表(Merge Two Sorted Lists)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3818 访问. 将两个有序链表合并为一个新的有序链表并返回.新链表 ...

  2. LeetCode 之 JavaScript 解答第23题 —— 合并K个有序链表(Merge K Sorted Lists)

    Time:2019/4/10 Title: Merge K Sorted Lists Difficulty: Difficulty Author: 小鹿 题目:Merge K Sorted Lists ...

  3. [PHP] 算法-合并两个有序链表为一个有序链表的PHP实现

    合并两个有序的链表为一个有序的链表: 类似归并排序中合并两个数组的部分 1.遍历链表1和链表2,比较链表1和2中的元素大小 2.如果链表1结点大于链表2的结点,该结点放入第三方链表 3.链表1往下走一 ...

  4. 算法----合并两个有序链表

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

  5. 算法--合并两个有序链表

    有两种方法,迭代和递归. 迭代: //不带头结点 Node * Merge(Node *head1 , Node *head2){//判空if ( head1 == NULL)return head2 ...

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

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

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

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

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

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

  9. 【LeetCode】21、合并两个有序链表

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

  10. LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版

    LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...

最新文章

  1. AlarmManager与PendingIntent的联合使用(一)
  2. MySQL数据库恢复(LOAD DATA)
  3. 如何评价英伟达9月2日凌晨发布的30系列新显卡?
  4. hive 2.1.1 mysql_Hive2.1.1集群搭建
  5. mysql哪一款好用_用了这么多年MySql,这些好习惯你用过哪些
  6. [转]Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
  7. 网站锁定php文件命令,PHP文件的锁定机制
  8. LaTeX 消除字体错误 Size substitutions with differences (Font) up to 0.41063pt have occurred.
  9. oracle instant client package,Oracle数据库之Oracle Instant Client的安装和使用
  10. 绿联网卡转接mac设置_绿联外置网卡Mac os 11.0 Big Sur驱动方案来了
  11. android ios 对比 组件_Android、iOS历史版本对比
  12. 使用halcon实现3维点云物体与模型的匹配并显示差异
  13. 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
  14. 输出每个数字对应的拼音
  15. 虚幻动画蓝图按层级的动画混合(layered)
  16. 以匠心正道,以决心致远:毫末智行的自动驾驶之路
  17. MYSQL 安装步骤
  18. delphi ado 连接mysql_DELPHI ADO连接数据库
  19. python大学生生活信息交互平台的设计与实现毕业设计源码031315
  20. 论文阅读+实战:SimGNN:A Neural Network Approach to Fast Graph Similarity Computation

热门文章

  1. php 深入,深入PHP解耦的三重境界(浅谈服务容器)
  2. 一定质量的封闭气体被压缩后_详解螺杆压缩机工作原理及结构
  3. 发票管理软件_企业为什么需要采购管理软件?
  4. C#+TaskScheduler(定时任务)实现定时自动下载
  5. eclipse生成ant build.xml打war包
  6. Python六大开源框架对比:Web2py略胜一筹(转)
  7. angular1的复选框指令--checklistModel
  8. Linux下出现command not found的解决办法
  9. LINUX 查看分区UUID的两种方法
  10. 【Python之旅】第四篇(一):Python装饰器