3 Star 21 Fork 5

xiaochen1024/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
21.js 1.15 KB
一键复制 编辑 原始数据 按行查看 历史
chenwei 提交于 2021-10-23 21:19 . init
//方法1
var mergeTwoLists = function (l1, l2) {
//递归终止 分隔到不能分割 也就是两个链表有一个的nxet不存在了 那就没法分割问题了 只能返回
if (l1 === null) {
return l2;
} else if (l2 === null) {
return l1;
} else if (l1.val < l2.val) {
//当前节点谁小,就让这个较小的节点的next和另一个链表继续递归合并
l1.next = mergeTwoLists(l1.next, l2); //分隔成合并l1.next, l2的子问题
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
};
//方法2
var mergeTwoLists = function (l1, l2) {
const prehead = new ListNode(-1); //虚拟头节点
let prev = prehead;
while (l1 != null && l2 != null) {
//循环两个链表
if (l1.val <= l2.val) {
//小的节点接在prev的后面
prev.next = l1;
l1 = l1.next; //向后移动l1
} else {
prev.next = l2; //向后移动l2
l2 = l2.next;
}
prev = prev.next; ////向后移动prev
}
prev.next = l1 === null ? l2 : l1; //两个链表一个遍历完,另一个可能还没遍历完,没遍历完的接上
return prehead.next; //返回prehead.next
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaochen1024/leetcode.git
git@gitee.com:xiaochen1024/leetcode.git
xiaochen1024
leetcode
leetcode
master

搜索帮助