【Leetcode】2274. 不含特殊楼层的最大连续楼层数

server/2025/1/7 21:48:18/

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果
  • 总结

题目

题目链接🔗
A l i c e Alice Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。 A l i c e Alice Alice 决定将一些楼层作为 特殊楼层 ,仅用于放松。

给你两个整数 b o t t o m bottom bottom t o p top top ,表示 Alice 租用了从 b o t t o m bottom bottom t o p top top(含 b o t t o m bottom bottom t o p top top 在内)的所有楼层。另给你一个整数数组 s p e c i a l special special ,其中 s p e c i a l [ i ] special[i] special[i] 表示 A l i c e Alice Alice 指定用于放松的特殊楼层。

返回不含特殊楼层的 最大 连续楼层数。
示例 1:

输入:bottom = 2, top = 9, special = [4,6] 输出:3 解释:下面列出的是不含特殊楼层的连续楼层范围:

  • (2, 3) ,楼层数为 2 。
  • (5, 5) ,楼层数为 1 。
  • (7, 9) ,楼层数为 3 。 因此,返回最大连续楼层数 3

示例 2:

输入:bottom = 6, top = 8, special = [7,6,8] 输出:0 解释:每层楼都被规划为特殊楼层,所以返回 0

提示

  1. 1 ≤ s p e c i a l . l e n g t h ≤ 1 0 5 1 \leq special.length \leq 10^5 1special.length105
  2. 1 ≤ b o t t o m ≤ s p e c i a l [ i ] ≤ t o p ≤ 1 0 9 1 \leq bottom \leq special[i] \leq top \leq 10^9 1bottomspecial[i]top109
  3. special 中的所有值 互不相同

思路

如果我们将给定的数组 s p e c i a l special special 按照升序排序,那么相邻两个元素之间的楼层就都不是特殊楼层。如果相邻的两个元素分别为 x x x y y y,那么非特殊楼层的数量即为 y − x − 1 y−x−1 yx1。记得还要对 t o p top top 还有 b o t t o m bottom bottom 进行特殊判断

代码

class Solution {
public:int maxConsecutive(int bottom, int top, vector<int>& special) {sort(special.begin(), special.end());int n = special.size();int ans = max(special[0] - bottom, top - special[n - 1]);for (int i = 1; i < n; ++i) {ans = max(ans, special[i] - special[i - 1] - 1);}return ans;}
};

复杂度分析

时间复杂度

  • 排序时间复杂度:排序数组 special 需要 O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n n n 是 special 数组的长度。
  • 遍历时间复杂度:遍历数组 special 需要 O ( n ) O(n) O(n)

因此,总的时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn)

空间复杂度

只使用了常数空间来存储一些变量,所以空间复杂度是 O ( 1 ) O(1) O(1)

结果

通过

总结

通过排序和遍历,我们能够高效地计算不含特殊楼层的最大连续楼层数。
时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn),适用于较大规模的数据。


http://www.ppmy.cn/server/156596.html

相关文章

【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】

目录&#x1f60b; 任务描述 相关知识 1. 二叉树的基本概念与结构定义 2. 建立二叉树 3. 先序遍历 4. 中序遍历 5. 后序遍历 6. 层次遍历 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;实现二叉树的遍历 相关知识 为了完成本关任务&#xff0c;你需要掌…

5G工业路由器品牌,5G赋能,重塑工业路由器新标杆

在万物互联的智能化时代&#xff0c;5G技术的飞速发展正以前所未有的速度推动着各行各业的数字化转型&#xff0c;工业互联网的崛起正在深刻改变传统生产模式&#xff0c;作为浪潮中的一员&#xff0c;计讯物联凭借其先进的5G工业路由器产品&#xff0c;正引领着一场工业通信领…

Android多渠道打包【友盟方式详细讲解版】

开发环境&#xff1a; Mac OS 15.0.1 Android Studio Jellyfish | 2023.3.1 Patch 2 废话不讲&#xff0c;不浪费大家时间&#xff0c;每步骤后面有解释&#xff0c;直接开始上手干 第一步&#xff1a; 在程序的清单文件【app/src/main/AndroidManifest.xml】配置如下节点内容…

使用Apache PDFBox将pdf文件转换为图片

一、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifact…

linux 查找redis 的配置文件 (`redis.conf`)

要查找 Redis 的配置文件 (redis.conf)&#xff0c;可以使用以下方法&#xff1a; ✅ 方法 1&#xff1a;使用 locate 或 find 命令 ➡️ 1. 使用 find 命令 在 WSL 或 Linux 中运行以下命令来查找配置文件&#xff1a; sudo find / -name redis.conf➡️ 2. 使用 locate 命…

30分钟学会HTML

HTML 基本语法 HTML&#xff08;HyperText Markup Language&#xff09;是构成网页内容的基础。它使用一系列的标签来描述网页的结构&#xff0c;包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…

数据挖掘教学指南:从基础到应用

数据挖掘教学指南&#xff1a;从基础到应用 引言 数据挖掘是大数据时代的核心技术之一&#xff0c;它从大量数据中提取有用信息和知识。本教学文章旨在为学生和初学者提供一个全面的数据挖掘学习指南&#xff0c;涵盖数据挖掘的基本概念、流程、常用技术、工具以及教学建议。…

Clojure语言的正则表达式

以Clojure语言的正则表达式 引言 Clojure 是一门现代化的功能性编程语言&#xff0c;它运行在 JVM&#xff08;Java Virtual Machine&#xff09;上&#xff0c;特别适合于并发和并行计算。在 Clojure 中&#xff0c;正则表达式的使用为字符串处理和数据验证提供了强大的支持…