面试经典150题——汇总区间

news2025/1/21 15:21:00

"The only place where success comes before work is in the dictionary." - Vidal Sassoon

person in yellow hoodie sitting on rock near lake and snow covered mountain during daytime

1. 题目描述

image-20240228085329488

2.  题目分析与解析

2.1 思路一

因为题目提示了我们数组是有序的,而覆盖区间都是根据数组中连续数字来确定的,比如:

image-20240228085548662

可以知道因为数组nums中有 {0,1,2}所以对应了区间“0-2”,同理 {4,5}对应了“4-5”,对于单独的 {7},对应单独区间“7”。可以发现,区间范围都是那些连续数字的头尾组成的,也就是他们之间相差1。因此根据以上性质,我们就可以写出如下:

代码思路:

  1. 初始化结果集与头部变量

  2. 遍历数组nums

  3. 对于当前数字的前一个数字不是当前数字 - 1的值,那么说明当前数字为一个新的区间的头,同时上一个区间的尾部也可以确定就是当前数字的上一个数字。(nums的首个元素肯定是一个区间的头部)

  4. 将求得的区间存入结果集

  5. 返回结果集

3. 代码实现

3.1 思路一

image-20240228091042252

image-20240228091024379

4. 相关复杂度分析

时间复杂度

  1. 遍历数组:这段代码主要通过一次遍历(for循环)来处理数组nums。在这个过程中,每个元素都被访问一次来确定它是否属于一个新的区间或者是当前区间的延续。

  2. 操作简化:在每次迭代中,进行的是常数时间的操作,包括比较、赋值、以及在列表ret中添加元素。

因此,时间复杂度主要取决于输入数组nums的长度n。遍历数组的时间复杂度是O(n)

空间复杂度

  1. 结果存储:使用了一个ArrayList来存储结果字符串,其大小取决于输入数组中连续区间的数量。在最坏的情况下(即数组中没有任何连续的元素),这个列表的大小将与输入数组的大小相同。

  2. 临时变量:使用了一些固定空间的临时变量,如head,和循环变量i,但这些不随输入规模增长。

因此,空间复杂度主要取决于结果列表ret的大小。在最坏情况下,这个列表中的元素数量与输入数组nums的元素数量相同,因此空间复杂度为O(n)

总结:

  • 时间复杂度:O(n)

  • 空间复杂度:O(n)

今天还会更一篇~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux/Spectra

Enumeration nmap 第一次扫描发现系统对外开放了22,80和3306端口,端口详细信息如下 22端口运行着ssh,80端口还是http,不过不同的是打开了mysql的3306端口 TCP/80 进入首页,点击链接时,提示域名不能解析&…

5分钟看懂安迪比尔定律

大家好,我是董董灿。 今天跟大家聊一个,在写程序的过程中节省内存的这个话题。 话题来源于一个小伙伴问:我在写程序的时候,更改一个判断语句,会提升几毫秒,换一种方法会节省几KB,这些有必要吗? 这里涉及到一个软件与…

搭建sql-labs-master

环境:win10 解压sql-labs-master靶场文件,会提示有重复,直接覆盖就好。 将sql-labs-master文件拖到phpstudy/www目录下 打开浏览器访问“本机ip/sql-labs-master或localhost/sql-labs-master或127.0.0.1/sql-labs-master” 页面底部就是此靶…

Spring Boot项目误将Integer类型写成int来进行传参

在处理项目中Idea中无报错: 问题: localhost:8080/param/m2在浏览器中输入:localhost:8080/param/m2 产生报错: This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Feb 27 20:55…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的生活垃圾检测与分类系统(Python+PySide6界面+训练代码)

摘要:本篇博客详细讲述了如何利用深度学习构建一个生活垃圾检测与分类系统,并且提供了完整的实现代码。该系统基于强大的YOLOv8算法,并进行了与前代算法YOLOv7、YOLOv6、YOLOv5的细致对比,展示了其在图像、视频、实时视频流和批量…

【virtual Box】功能速通:安装 Windows 和 Ubuntu

文章目录 一、虚拟机1.1 概述1.2 virtual box概述 二、新建虚拟机、删除、注册三、虚拟机内部设置3.1 安装增强功能驱动3.2 分辨率问题3.3 网络链接方式 一、虚拟机 1.1 概述 虚拟机(Virtual Machine,VM)是一种软件实现的计算机系统&#x…

Qt篇——QTableWidget保存表格数据到Excel文件中,读Excel内容到QTableWidget

表格和excel例子如下图所示&#xff1a; 一、QTableWidget保存表格数据到Excel文件中 代码如下&#xff1a; &#xff08;pro文件中添加QT axcontainer&#xff09; #include <QAxObject>void MainWindow::saveTableToExcel() {QDateTime current_date_time QDateTi…

【计算机网络】Socket的OOBInline选项与UrgentData

Socket的OOBINLINE选项是用于处理TCP紧急数据的一个设置。TCP紧急数据通常指的是那些需要优先处理的数据&#xff0c;例如某些控制信息或关键数据。 OOB&#xff08;Out-of-Band&#xff09;表示带外数据&#xff0c;OOBInline是一个Socket选项&#xff0c;用于控制是否将接收…

基于GWO优化的LSTM多输入分类预测(Matlab)灰狼算法优化长短期神经网络分类预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matalb平台编译&…

自动驾驶框架:自动驾驶汽车定位-感知-规划-决策-控制概述,按照我的架构图理解:决策决定的是速度,规划决定的是路径(架构理解推荐)

1.按照我的架构图理解&#xff1a;决策决定的是速度&#xff0c;规划决定的是路径 参考链接&#xff1a;【自动驾驶】运动规划丨速度规划丨自动驾驶速度规划及状态协调方法 2.下面是参考别人的理解&#xff1a; 自动驾驶汽车定位-感知-规划-决策-控制概述 规划-决策-控制知…

女儿的国风穿搭~粉绿两色你喜欢哪个?

法国皱绣花马甲和飘雅面料衬衫的组合 赋予古典新的诠释&#xff0c;别具一番韵味 衣服上是古典的山树绣花设计 精致典雅&#xff0c;上身立体又轻盈 做了粉绿两色&#xff0c;很适合春天的氛围

【王道数据结构】【chapter7查找】【P285t5】

线性表中各节点的检索概率不等时&#xff0c;可用如下策略提高顺序检索的效率&#xff1b;若找到指定的结点&#xff0c;则将该结点和其前驱结点&#xff08;若存在&#xff09;交换&#xff0c;使得经常被访问的结点尽量位于表的前端。试设计在顺序结构和链式结构的线性表盘上…

在正式项目中使用Improv配网及小程序配网工具

前面我们演示了使用.Net nanoFramework为ESP32进行蓝牙配网的简单演示&#xff0c;这个功能在实际项目中是非常有用的。当然&#xff0c;使用中我们还需要考虑一些其他的问题&#xff0c;比如如何将这个功能集成到我们的项目中&#xff0c;本文将详细介绍如何在正式项目中使用I…

Java进阶-集合(1)

进入Java集合的学习&#xff0c;集合的数学概念是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。在Java中的集合也是类似的&#xff0c;先学习集合的框架&#xff0c;这次主要介绍一下Conllection接口。 一、概述 1、数组存储 数组存储具有两大缺点&#xff1a; …

BevFusion (2): nuScenes 数据介绍及点云可视化

1. nuScenes 数据集 1.1 概述 nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。 nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 …

FinalShell控制远程Linux服务器(首先得自己已购买好Linux服务器并安装了对应的系统,这里是安装的centos系统)

1、电脑上需要安装FinalShell软件 可以到分享的链接中下载软件&#xff0c;然后双击点击下一步安装即可 链接&#xff1a;https://share.weiyun.com/Y6TrdDHp 密码&#xff1a;gbvyg62、建立远程连接 3、输入连接信息 4、显示连接主机成功&#xff0c;表示远程进入 5、输入…

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…

uniapp小程序uView自定义tabbar

两年没接触小程序&#xff0c;又重新拾请来 前言 工具&#xff1a;HBuilder X 3.99版本 微信开发者工具 1.06 语言&#xff1a;vue2 uView 一、创建项目 先使用HBuilder X工具创建一个空白uni-app项目 uviewTest 二、安装和配置 HBuilder X找到工具-》插件安装-》插件市场 u…

物理机迁移为虚拟机(vmware converter6.0)

物理机迁移为虚拟机&#xff08;ESXI6.5&#xff09; 注&#xff1a; 本操作需要提前在物理机上安装好vmware converter工具 vmware converter6.0可以迁移至ESXI6.5,如ESXI版本更高&#xff0c;可以自己尝试。 1、 安装好vmware converter&#xff0c;运行vmware converter。…

排序算法--堆排序

堆排序的时间复杂度是O&#xff08;N*logN&#xff09;&#xff0c;优于选择排序O&#xff08;N^2&#xff09; 一、堆 1.堆的概念&#xff1a;堆一般指的是二叉堆&#xff0c;顾名思义&#xff0c;二叉堆是完全二叉树或者近似完全二 2.堆的性质&#xff1a;①完全二叉树 ②每…