0021. 合并两个有序链表
题目地址(21. 合并两个有序链表)
https://leetcode-cn.com/problems/merge-two-sorted-lists
题目描述
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
前置知识
公司
阿里
字节
腾讯
amazon
apple
linkedin
microsoft
公司
阿里、字节、腾讯
思路
本题可以使用递归来解,将两个链表头部较小的一个与剩下的元素合并,并返回排好序的链表头,当两条链表中的一条为空时终止递归。
关键点
掌握链表数据结构
考虑边界情况
代码
语言支持:CPP, JS, Java, Python
CPP Code:
JS Code:
Java Code:
Python Code:
复杂度分析
M、N 是两条链表 l1、l2 的长度
时间复杂度:$O(M+N)$
空间复杂度:$O(M+N)$
扩展
你可以使用迭代的方式求解么?
迭代的 CPP 代码如下:
迭代的 JS 代码如下:
迭代的Java代码如下:
迭代的Python代码如下:
大家对此有何看法,欢迎给我留言,我有时间都会一一查看回答。更多算法套路可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。 大家也可以关注我的公众号《力扣加加》带你啃下算法这块硬骨头。

最后更新于
这有帮助吗?