Leetcode打卡:不含特殊楼层的最大连续楼层数

ops/2025/1/7 23:54:16/

执行结果:通过

题目 2274 不含特殊楼层的最大连续楼层数

Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。Alice 决定将一些楼层作为 特殊楼层 ,仅用于放松。

给你两个整数 bottom 和 top ,表示 Alice 租用了从 bottom 到 top(含 bottom 和 top 在内)的所有楼层。另给你一个整数数组 special ,其中 special[i] 表示  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 <= special.length <= 105
  • 1 <= bottom <= special[i] <= top <= 109
  • special 中的所有值 互不相同

代码以及解题思路

代码

class Solution:def maxConsecutive(self, bottom: int, top: int, special: List[int]) -> int:return max(y - x for x, y in pairwise([bottom - 1] + sorted(special) + [top + 1])) - 1

解题思路

  1. 理解题意
    • bottom 和 top 定义了查找连续整数序列的范围。
    • special 列表包含了在这个范围内的一些特殊数字,这些数字可以构成连续整数序列的一部分。
  2. 处理边界情况
    • 在开始计算之前,为了处理边界情况,我们在 special 列表的前后分别添加 bottom - 1 和 top + 1。这两个数字不在目标范围内,但这样做可以帮助我们计算从 bottom 开始到第一个特殊数字以及从最后一个特殊数字到 top 结束之间的连续整数序列长度。
  3. 排序
    • 将 special 列表进行排序,确保数字是按升序排列的。这是因为在连续整数序列中,每个数字都应该比前一个数字大1。
  4. 计算连续序列长度
    • 使用 pairwise 函数(来自 itertools 模块,但题目描述中未明确提及,可能是假设已知)来计算相邻元素之间的差值。pairwise 函数会返回一个迭代器,其中每个元素是一个元组,包含列表中的相邻项 (x, y)
    • 对每个 (x, y) 元组,计算 y - x,这将给出从 x 到 y(不包括 y)之间的连续整数个数。注意,由于我们在列表的开头和结尾添加了 bottom - 1 和 top + 1,这里的 y - x 实际上表示的是从 x+1 到 y-1 的连续整数个数(因为我们要找的是严格大于前一个数的连续整数序列)。
  5. 找出最大长度
    • 使用 max 函数找出所有计算出的连续整数序列长度的最大值。
  6. 调整结果
    • 由于我们在计算长度时考虑了序列的起始和结束数字(即 x+1 到 y-1),而题目要求的是序列中数字的数量,因此需要从最大值中减去1来得到最终答案。这是因为我们在计算长度时包括了序列两端的边界效应(即添加的 bottom - 1 和 top + 1 导致的额外长度)。

http://www.ppmy.cn/ops/148301.html

相关文章

【学Rust开发CAD】1 环境搭建

文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具&#xff0c;这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统&#xff0c;往…

Linux C编程——文件IO基础

文件IO基础 一、简单的文件 IO 示例二、文件描述符三、open 打开文件1. 函数原型2. 文件权限3. 宏定义文件权限4. 函数使用实例 四、write 写文件五、read 读文件六、close 关闭文件七、Iseek 绍 Linux 应用编程中最基础的知识&#xff0c;即文件 I/O&#xff08;Input、Outout…

grouped.get_group((‘B‘, ‘A‘))选择分组

1. df.groupby([team, df.name.str[0]]) df.groupby([team, df.name.str[0]]) 这一部分代码表示对 DataFrame df 按照 两个条件 进行分组&#xff1a; 按照 team 列&#xff08;即团队&#xff09;。按照 name 列的 首字母&#xff08;df.name.str[0]&#xff09;。 df.name.s…

深兰科技董事长陈海波应邀为华东师大心理学专业师生做AI专题讲座

12月28日&#xff0c;应上海华东师范大学的邀请&#xff0c;上海市科协常委、上海交通大学博士生导师、深兰科技创始人兼董事长陈海波专程到校&#xff0c;为该校心理学专业的全体师生做了一场关于人工智能推动个人数字化未来的专题讲座。 他在演讲中&#xff0c;首先详细讲述了…

小程序组件 —— 30 组件 - 背景图片的使用

在编写小程序的样式文件时&#xff0c;可以使用 background-image 属性来设置元素的背景图像&#xff1b;但是这个属性在微信小程序中使用时存在坑&#xff1b; 注意事项&#xff1a;微信小程序中的 background-iamge 不支持本地路径&#xff01;需要使用网络图片&#xff0c;…

C语言 扫雷程序设计

目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语&#xff1a; 一个简单的扫雷游戏&#xff0c;通过宏定义可以修改行列的…

[极客大挑战 2019]Http 1

进入环境&#xff1a; 检查源码发现有一个链接&#xff0c;但是这里没有绑定&#xff0c;需要手动跳转&#xff0c;打开后&#xff0c;发现提示&#xff1a; 这里就是需要我们从https://Sycsecret.buuoj.cn来访问它 因此我们抓包&#xff0c;使用referer&#xff1a;服务器伪造…

node.js内置模块之---fs 模块

fs模块的作用 在 Node.js 中&#xff0c;fs&#xff08;文件系统&#xff09;模块提供了与文件系统交互的功能&#xff0c;允许你读取、写入、更新和删除文件&#xff0c;以及操作文件和目录。这个模块是 Node.js 的核心模块之一&#xff0c;主要用于服务器端处理文件系统相关的…