Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

【剑指offer】BM4 合并两个排序的链表(js实现)

想做一只快乐的修狗 2022-08-06 10:14:29 阅读数:2 评论数:0 点赞数:0 收藏数:0

1. 题目

【剑指offer】BM4 合并两个排序的链表

2. 代码

  1. 方法一:递归
// function ListNode(x){

// this.val = x;
// this.next = null;
// }
function Merge(pHead1, pHead2)
{

// write code here
// 递归终止条件
if(pHead1 === null) return pHead2
if(pHead2 === null) return pHead1
// 递归
while(pHead1 !== null && pHead2 !== null) {

if(pHead1.val <= pHead2.val) {

pHead1.next = Merge(pHead1.next, pHead2)
return pHead1
} else if(pHead2.val < pHead1.val) {

pHead2.next = Merge(pHead1, pHead2.next)
return pHead2
}
}
}
module.exports = {

Merge : Merge
};
  1. 方法二:创建一个新链表,每次比较都向新链表上挂载节点。
// function ListNode(x){

// this.val = x;
// this.next = null;
// }
function Merge(pHead1, pHead2)
{

// write code here
if(pHead1 == null) return pHead2
if(pHead2 == null) return pHead1
if(pHead1 == null && pHead2 == null) return null
let res = {

val: null,
next:null,
}
let cur = res
while(pHead1 != null && pHead2 != null) {

if(pHead1.val < pHead2.val) {

cur.next = pHead1
pHead1 = pHead1.next
} else {

cur.next = pHead2
pHead2 = pHead2.next
}
cur = cur.next
}
// 再判断一下是否还有链表元素没有添加
if(pHead1 != null) cur.next = pHead1
else if(pHead2 != null) cur.next = pHead2
return res.next
}
module.exports = {

Merge : Merge
};

3. 参考

  1. 一看就会,一写就废?详解递归
版权声明
本文为[想做一只快乐的修狗]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44109827/article/details/126171460

支付宝红包,每日可领(支付宝免费1-2元支付红包)