文章图片
文章图片
【算法|算法:合并两个排序的链表】
输入两个递增排序的链表 , 合并这两个链表并使新链表中的节点仍然是递增排序的 。
示例
- 输入: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|几款免费PDF合并成一个PDF的软件推荐,快收藏起来吧!
- iPhone14|发布不到两个月跌至2999元,100W+256GB,荣耀新机售价更亲民了
- 芯片|比禁止出货还严重?两个新消息正式传来!外媒:任正非看得很透彻
- 美团|西班牙或迎运营商新巨头!Orange宣布将与Másmovil合并业务
- 点位|AI算法上阵 让你核酸检测不排长队
- MIUI13|MIUI13新版本推送只有704MB,内容只有两个,你升级了吗?
- 微信|微信突然放大招,这两个重磅新功能太香了!
- 发布不到两个月跌至2999元,100W+256GB,荣耀新机售价更亲民了
- 算法|取消外卖和关闭电商,恢复市面繁荣,这种做法你觉得好吗?