Question
难度:简单
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
示例2:
输入:l1 = [], l2 = [] 输出:[]
示例 3:
输入:l1 = [], l2 = [0] 输出:[0]
提示:
两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列
Solution
不知道大家还记得
合并有序数组
吗?异曲同工
忘记的小伙伴可以先看一下
- 当
l1
和l2
都不是空链表时,判断l1
和l2
哪一个链表的头节点的值更小,将较小值的节点添加到结果里。 - 当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。
- 将非空链表接在合并链表的后面
- 对于链表操作,一般都需要维护一个当前节点的指针,可以再回看一下两数相加帮助理解
Code
所有
leetcode
代码已同步至github欢迎
star
class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode l3 = new ListNode(-1); ListNode cur=l3; while (l1!=null&&l2!=null){ if (l1.val <= l2.val) { cur.next = l1; l1 = l1.next; } else { cur.next = l2; l2 = l2.next; } cur=cur.next; } cur.next = l1 == null ? l2 : l1; return l3.next; } }
Result
复杂度分析
- 时间复杂度:O(m+n)
🌈寻宝
⭐今天是坚持刷题更文的第6/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
⭐更多算法题欢迎关注专栏《leetcode》
为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等
怎么领取请大家自己找,寻宝游戏现在开始。
找不到可以评论留言,一条就会注意到你。
如果还不行,请私信我。