21. 合并两个有序链表 JavaScript实现
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实现相关推荐
- 【LeetCode】【HOT】21. 合并两个有序链表(递归)
[LeetCode][HOT 100]21. 合并两个有序链表 文章目录 [LeetCode][HOT 100]21. 合并两个有序链表 package hot;import java.util.Ar ...
- [递归|迭代] leetcode 21 合并两个有序链表
[递归|迭代] leetcode 21 合并两个有序链表 1.题目 题目链接 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2 ...
- leetcode 21 java_LeetCode 21. 合并两个有序链表
LeetCode 21. 合并两个有序链表 题目 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-> ...
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- LeetCode 21. 合并两个有序链表(链表)
上一篇博客:LeetCode 20. 有效的括号(栈.字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...
- 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表
点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...
- 【Java】leetCode 21 合并两个有序链表
题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...
- LeetCode 21合并两个有序链表22括号生成
微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- LeetCode 21. 合并两个有序链表(单链表)
文章目录 1. 题目信息 2. 解题 1. 题目信息 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例:输入:1->2->4, 1-> ...
最新文章
- 赛门铁克公告:解密Kneber恶意软件
- 02-Linux Kernel(armv8-aarch64)的原子操作的底层实现
- zoj 3809 枚举水题 (2014牡丹江网赛 A题)
- 壁纸:换一张自己喜欢的手机壁纸
- Node.js:一个路由2次 request
- C#从入门到精通视频教程(2009年最新)- 视频列表
- linux 版本号 加号,如何去除Linux Kernel版本号后面的加号?
- TODO算子-双Value类型
- CTO@全体成员,未经允许和评审不让用反射,Java反射到底慢在哪?
- 【Flutter小记4】Android手动设置Camera焦点没效果的解决方案CameraImage转YUV或RGBA要注意!
- Eclipse4.6(neno)配置Tomcat插件的两种方式
- 高铁轮毂表面缺陷的<视觉显著性>超像素图像检测方法
- 数字故宫(360全景+纪录片+数据库+公开课)
- mysql selecte_【mysql】MySQL eplain 完全解读
- CentOS7系统开机报错:you might want to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot
- 将Simulink中的数据更新到GUI中(记录)
- 设置EXCEL的默认打印机
- 基于WEB的水果电商平台设计
- Pinterest架构
- 买充电宝主要看什么参数?性能最好的充电宝推荐
热门文章
- altera cyclone v IOE delay 设置
- 解决mysql添加时间日期字段为0000-00-00时报错问题
- 尹语堂供应链20220212
- Silverlight C# 游戏开发:无尽的夜空
- java的matcher方法_Java-Android-正则表达式-Matcher方法
- Shared Memory
- vant 引进单个样式_Vant 定制主题
- 含泪总结,五种常见的最短路径算法
- 单向链表操作详解(二)[The End]
- 百度网盘分享出去文件不存在_百度网盘分享文件被取消了怎么办?找回被取消分享文件的方法...