21. 合并两个有序链表

合并有序链表

一、递归

递归详解

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
var mergeTwoLists = function(list1, list2) {// 进行判空的处理if(list1 == null) return list2;if(list2 == null) return list1;// 进行值的比较if (list1.val <= list2.val){list1.next = mergeTwoLists(list1.next,list2);return list1;}else{list2.next = mergeTwoLists(list1,list2.next);return list2;}
};

二、迭代 – 哨兵节点

1、哨兵节点

哨兵节点的作用是方便得到最后的链表,即一个虚拟的头节点。

2、迭代的过程

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
var mergeTwoLists = function(list1, list2) {// 设置哨兵节点(虚拟头节点),将较小的节点连接到这个哨兵节点,最后返回prehead.next即可。let preHead = new ListNode(-1);// 设置一个pre指针,用于连接链表 let pre = preHead;// 开始遍历,比较两者大小。当两个链表均不空的时候,进行值的比较while(list1 && list2){if(list1.val <= list2.val){pre.next = list1;list1 = list1.next;}else{pre.next = list2;list2 = list2.next;}// 移动pre的指针pre = pre.next;}// 当一开始其中一个链表为空的时候,或者一直遍历直到其中一个短的链表为空的时候,直接把非空的另外一个链表添加到pre.nextif (list1 == null){pre.next = list2;}else{pre.next = list1;}return preHead.next;};

三、js语法

1、undefine null Null

(1) null \ Null

Null是数据类型,null是空值。

// 某个值是否为空的判断,用null
while(list1 == null){}while(list1 != null){}while(list1){}

(2)undefined \ not defined \ null

  • null表示“没有对象”,即此处不该有值.
  • undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
// undefined 一个定义了但是未赋值的变量
var a;
console.log(a);// not defined 一个未定义的没有声明的对象
console.log(a);

2、创建新的节点

// 定义节点
function ListNode(val, next) {this.val = (val===undefined ? 0 : val)this.next = (next===undefined ? null : next)
}// 创建新的节点 -- new
let preHead = new ListNode(-1);

3、递归的调用

直接在里面调用即可

var mergeTwoLists = function(list1, list2) {list1.next =  mergeTwoLists(list1.next,list2);
};

21. 合并两个有序链表 JavaScript实现相关推荐

  1. 【LeetCode】【HOT】21. 合并两个有序链表(递归)

    [LeetCode][HOT 100]21. 合并两个有序链表 文章目录 [LeetCode][HOT 100]21. 合并两个有序链表 package hot;import java.util.Ar ...

  2. [递归|迭代] leetcode 21 合并两个有序链表

    [递归|迭代] leetcode 21 合并两个有序链表 1.题目 题目链接 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2 ...

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

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

  4. Java实现 LeetCode 21 合并两个有序链表

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 赛门铁克公告:解密Kneber恶意软件
  2. 02-Linux Kernel(armv8-aarch64)的原子操作的底层实现
  3. zoj 3809 枚举水题 (2014牡丹江网赛 A题)
  4. 壁纸:换一张自己喜欢的手机壁纸
  5. Node.js:一个路由2次 request
  6. C#从入门到精通视频教程(2009年最新)- 视频列表
  7. linux 版本号 加号,如何去除Linux Kernel版本号后面的加号?
  8. TODO算子-双Value类型
  9. CTO@全体成员,未经允许和评审不让用反射,Java反射到底慢在哪?
  10. 【Flutter小记4】Android手动设置Camera焦点没效果的解决方案CameraImage转YUV或RGBA要注意!
  11. Eclipse4.6(neno)配置Tomcat插件的两种方式
  12. 高铁轮毂表面缺陷的<视觉显著性>超像素图像检测方法
  13. 数字故宫(360全景+纪录片+数据库+公开课)
  14. mysql selecte_【mysql】MySQL eplain 完全解读
  15. CentOS7系统开机报错:you might want to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot
  16. 将Simulink中的数据更新到GUI中(记录)
  17. 设置EXCEL的默认打印机
  18. 基于WEB的水果电商平台设计
  19. Pinterest架构
  20. 买充电宝主要看什么参数?性能最好的充电宝推荐

热门文章

  1. altera cyclone v IOE delay 设置
  2. 解决mysql添加时间日期字段为0000-00-00时报错问题
  3. 尹语堂供应链20220212
  4. Silverlight C# 游戏开发:无尽的夜空
  5. java的matcher方法_Java-Android-正则表达式-Matcher方法
  6. Shared Memory
  7. vant 引进单个样式_Vant 定制主题
  8. 含泪总结,五种常见的最短路径算法
  9. 单向链表操作详解(二)[The End]
  10. 百度网盘分享出去文件不存在_百度网盘分享文件被取消了怎么办?找回被取消分享文件的方法...