当前位置: 首页 > news >正文

合并两个有序链表(leetcode)

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例
在这里插入图片描述

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

思路

每次递归都会比较当前两个节点的值,选择较小的节点作为合并后的链表的下一个节点,并继续递归合并剩余部分。(等于情况谁都可以,这里判给(list2))
这个过程会持续进行,直到有一个链表为空,然后将另一个链表直接连接到合并后的链表的末尾。因为是非递减的链表所以可以这样直接合并。

测试代码

class Solution{public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1==null)return list2;if (list2==null)return list1;if (list1.val<list2.val){list1.next=mergeTwoLists(list1.next, list2);return list1;}else {list2.next=mergeTwoLists(list1, list2.next);return list2;}}
}

复杂度

时间复杂度
最坏情况下,每次递归都会处理一个节点,并且每个节点都需要比较和连接操作。
假设 n 是 list1 的长度,m 是 list2 的长度。
所以总体时间复杂度为 O(n + m)。
空间复杂度
在最坏情况下,递归深度达到 n + m。
因此,空间复杂度为 O(n + m),线性级别。

测试结果

image.png

http://www.lryc.cn/news/110185.html

相关文章:

  • CAS之AtomicReference原理解析
  • JS/JQ实现字符串加密成 HEX(十六进制) 字符串
  • 骨传导耳机怎么样?盘点五款适合室外佩戴的骨传导耳机
  • 【flink】使用flink-web-ui提交作业报错
  • 「从零入门推荐系统」22:chatGPT、大模型在推荐系统中的应用
  • 机器学习---概述(一)
  • 概念解析 | AutoFed:面向异构数据的联邦多模态自动驾驶的学习框架
  • vue3+uniapp自定义tabbar
  • stable diffusion webui 安装
  • csdn文章编辑器必备语法备用
  • 机器学习鲁棒性笔记
  • ubuntu 有 1 个软件包没有被完全安装或卸载
  • 【QT调用ST-link-使用QT编写程序-调用ST-LINK_CLI.exe-烧写STM32F4xxx-基础样例】
  • 高并发下的Java项目解决方案
  • 华为推出手机系统云翻新服务:什么是云翻新?如何使用?
  • 修改时间和创建时间的设计问题
  • CentOS 搭建 Harbor 镜像仓库(图文详解)
  • 【云原生】k8s组件架构介绍与K8s最新版部署
  • 你真的了解什么是生成式AI吗?
  • Linux--高级IO
  • 【C# 基础精讲】C# 开发环境搭建(Visual Studio等)
  • 谷粒商城第九天-解决商品品牌问题以及前后端使用检验框架检验参数
  • Java8函数式接口
  • .Net6 Web Core API --- Autofac -- AOP
  • RocketMQ基本概念和高级原理
  • 小白到运维工程师自学之路 第六十六集 (docker 网络模型)
  • Go和Java实现建造者模式
  • AutoSAR系列讲解(实践篇)11.6-服务映射(自顶向下)
  • EXCEL, 用if({1,0,0} ...) 实现把给定的区域,输出为任意你想要的矩阵,数组区域!
  • c++实现Qt对象树机制