
文章图片

文章图片

【算法|算法:合并两个排序的链表】
输入两个递增排序的链表 , 合并这两个链表并使新链表中的节点仍然是递增排序的 。
示例
- 输入:1->2->4 1->3->4
- 输出:1->1->2->3->4->4
- 0 <= 链表长度 <= 1000
代码如下:
复杂度分析
- 时间复杂度:O(n+m) , 其中 n 和 m 分别为两个链表的长度 。 因为每次循环迭代中 , l1 和 l2 只有一个元素会被放进合并链表中 ,因此 while 循环的次数不会超过两个链表的长度之和 。 所有其他操作的时间复杂度都是常数级别的 , 因此总的时间复杂度为 O(n+m) 。
- 空间复杂度:O(1) 。 我们只需要在常数的空间存放若干变量 。
代码如下:
复杂度分析
- 时间复杂度:O(n+m) , 其中 n 和 m 分别为两个链表的长度 。 因为每次调用递归都会去掉 l1 或者 l2 的头节点(直到至少有一个链表为空) , 函数 mergeTwoList 至多只会递归调用每个节点一次 。 因此 , 时间复杂度取决于合并后的链表长度 , 即 O(n+m) 。
- 空间复杂度:O(n+m) , 其中 n 和 m 分别为两个链表的长度 。 递归调用 mergeTwoLists 函数时需要消耗栈空间 , 栈空间的大小取决于递归调用的深度 。 结束递归调用时 mergeTwoLists 函数最多调用 n+m 次 , 因此空间复杂度为 O(n+m) 。
好兄弟可以点赞并关注我 , 全部都是干货 。
- 如何将视频合并成一个?
- 在这信息技术飞速发展的今天|支付宝和微信的这两个隐藏功能,大家平时都没有留意而已
- 每天大家都在使用微信|微信群聊新增两个功能,一个直接@提醒多个人
- 算法|外卖行业的下滑,或许是平台从放弃“算法”的那一刻起!
- iphone xr|iPhone XR换14Pro,深度使用两个月,这些心里话不吐不快
- 芯片|芯片市场传来两个消息,复旦大学立功了,人民日报:抛弃幻想
- 算法|快手亏损780亿,滴滴493亿,美团235亿,怎么回事?
- 算法|视频蹿红的秘密,流量密码到底是什么?
- 中国移动|两个消息传来,华为、小米立功了,外媒:打压出现“副作用”
- 小米科技|小米发布会大概是七款新品,手机两个系列,还有mini电脑主机
