文章目录
1. 链表反转
题目描述:leetcode-24
function revertList (head) {
if(!head) return null;
let prev = null, curr = head;
while(curr) {
let next = curr.next;
prev = curr.next;
curr = next;
}
return prev;
}
2.合并两个有序链表
题目描述:leetcode-21
- 递归
var mergeTwoLists = function(l1, l2) {
if (l1 === null) {
return l2;
} else if (l2 === null) {
return l1;
} else if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
};
- 迭代
function mergeList (l1, l2) {
const preNode = new ListNode(-1);
const pre = preNode;
while(l1 !==null && l2!==null){
if(l1.val <ls.val) {
pre.next = l1;
l1 = l1.next;
} else {
pre.next = l2;
l2 = l2.next;
}
pre = pre.next;
}
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
pre.next = l1===null ? l2 : l1;
return preNode.next;
}