Leetcode|Leetcode 21 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]【Leetcode|Leetcode 21 合并两个有序链表】示例 2:
输出:[1,1,2,3,4,4]
输入:l1 = [], l2 = []示例 3:
输出:[]
输入:l1 = [], l2 = [0]解题思路 从链表头开始比较,
输出:[0]
l1
与 l2
是有序递增的,所以比较 l1.val
与 l2.val
的较小值就是合并后链表的最小值,次小值就是小节点的 next.val
与大节点的 val
比较的较小值,依次递归,直到递归到 l1
、l2
均为 null
。当递归到任意链表为
null
,直接将 next
指向另外的链表即可,不需要继续递归了。代码实现
function mergeTwoLists(l1, l2) {
if (l1 == null) return l2;
if (l2 == null) return l1;
if (l1.val <= l2.val) {
// 如果 l1.val <= l2.val ,次小值就是 l1.next 与 l2 比较的较小值
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
// 如果 l1.val > l2.val ,次小值就是 l2.next 与 l1 比较的较小值
l2.next = mergeTwoLists(l2.next, l1);
return l2;
}
};
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 刘婵为何不娶关羽的女儿为妻子,而为何要娶张飞的两个女儿
- 说睡
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- 有人与我谈格局
- ||11|2019年9月9日
- 活的教导7:两个阶段