021.合并两个有序链表,递归和遍历,beat100%
鲁迅说过,每天刷一遍二哥的 LeetCode 刷题笔记,离大厂就会更近一步(dog)。
题意
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
难度
简单
标签
链表、排序
示例
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
输入:l1 = [], l2 = []
输出:[]
输入:l1 = [], l2 = [0]
输出:[0]
分析 1
先来读题,关键词,两个升序链表,合并,一个新的升序链表。
既然升序过,那最小的数字肯定是两个链表l1和l2中头节点中的一个。
如果最小的是 l1 的头节点,那么第二小的节点肯定是l2的头节点或者l1.next,只要再比较一下两个的大小就能够得到第二小的节点。
如果最小的是 l2 的头节点,那么第二小的肯定是l1的头节点或者l2.next;
那我们就可以采用递归的方式:
if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
真诚点赞 诚不我欺
回复