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

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

分析:

设置一个伪指针作为拉链,同时在两个链表上分别放置一个指针,两串链表相当于拉索,尾指针在两串链表之间移动,模拟拉拉链的模样。起初 let dummy = new ListNode(-1), cur = dummy;,伪指针。当两条链表上的指针在移动时,通过比较大小,将小的数字放在拉链上,同时指针向后移动一位。当接近末尾时,一定有一串链表先遍历完,盛另一个链表孤零零,我们把这种情况下剩下的节点直接放在拉链上,即合并成功。

代码:

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
/*** @param {ListNode} list1* @param {ListNode} list2* @return {ListNode}*/
var mergeTwoLists = function (list1, list2) {let dummy = new ListNode(-1), cur = dummy;let p1 = list1, p2 = list2;while (p1 && p2) {if (p1.val < p2.val) {cur.next = p1p1 = p1.next} else {cur.next = p2p2 = p2.next}cur = cur.next}if (!p1) {cur.next = p2} else {cur.next = p1}return dummy.next
};

递归方式

const mergeTwoLists = function (list1: ListNode | null, list2: ListNode | null): ListNode | null {if (!list1) return list2if (!list2) return list1if (list1.val < list2.val) {list1.next = mergeTwoLists(list1.next, list2)return list1} else {list2.next = mergeTwoLists(list1, list2.next)return list2}
}

合并两个有序链表js相关推荐

  1. java合并两个有序链表_JS实现的合并两个有序链表算法示例

    本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1-> ...

  2. 21. 合并两个有序链表 JavaScript实现

    21. 合并两个有序链表 合并有序链表 一.递归 递归详解 /*** Definition for singly-linked list.* function ListNode(val, next) ...

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

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

  4. 【Java】leetCode 21 合并两个有序链表

    题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...

  5. 合并两个有序链表分析

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

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

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

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

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

  8. LeetCode题组:第21题-合并两个有序链表

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

  9. LeetCode 21合并两个有序链表22括号生成

    微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...

  10. 2019-03-21-算法-进化(合并两个有序链表)

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

最新文章

  1. kvm安装及虚拟机创建
  2. VMware vSAN6.7 设计和优化 vSAN 主机--
  3. 解决Eclipse无法打开“Failed to load the JNI shared library”(转)
  4. 【Android】资源加载过程
  5. python高级教程html文件_Python之html转docx文件高级用法
  6. 电子商务计算机网络安全技术教案,网络安全技术教案.pdf
  7. 如何实现一个符合泊松分布的即时消息发生器?
  8. 无法删除sqlserver的jobs的方式
  9. (04)System Verilog 常用数据类型示例
  10. 【ElasticSearch】Es 源码之 NodeConnectionsService 源码解读
  11. ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)
  12. .NET Core 开源库被曝漏洞,可使恶意软件逃避检测,无补丁
  13. 66. 编写高效的 JavaScript
  14. 视觉三维重建中的关键技术及代码实现视频分享
  15. 正解mysql: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)
  16. zoj 3690(递推+矩阵优化)
  17. 《新年Flag》2019年“新年Flag” - 新目标 学习计划
  18. 计算机网络之物理层,数据链路层,网络层 学习笔记
  19. 计算机u盘 硬盘无法读取,U盘在电脑上读取不出来怎么办?
  20. Google Chrome for mac(谷歌浏览器)

热门文章

  1. 新浪微博批量删除微博的方法
  2. Unity PlayerSetting设置
  3. 39份AICon全球人工智能与机器学习技术大会 · 北京站2021(PPT汇总)
  4. tkinter显示rtf文件
  5. word 批量转 pdf
  6. 怎么创建电脑的无线网络连接服务器,怎么开通无线网络
  7. ShuffleNet原理
  8. 专门用来保存图片生成图片链接的工具博文
  9. [AngularJS面面观] 16. 依赖注入 --- 注入器中如何管理对象
  10. 库存进销存出入库销售mysql表结构_进销存数据库表结构设计.doc