腾讯2025年校招笔试真题手撕(三)

一、题目

今天正在进行赛车车队选拔,每一辆赛车都有一个不可以改变的速度。现在需要选取速度差距在10以内的车队(车队中速度的最大值减去最小值不大于10),用于迎宾。车队的选拔按照的是人越多越好的原则,给出n辆车的速度,你能选出满足条件的最多车辆的车队吗。 输入描述 第一行一个数字n(1<=n<=100000)。 接下来一行n个整数,speed[i] 表示第i辆车的速度为speed(i)(1<=speed[i]<=109)。 输出描述 输出一行,最大车辆数目。

二、分析

在这个问题中,我们的目标是从给定的赛车速度中找到一个满足速度差距不超过10的最大车队。首先,需要理解题目中的输入和输出要求。输入的第一行是一个整数n,表示赛车的数量。接下来的一行中有n个整数,分别代表每辆赛车的速度。我们的任务是找出这些赛车中一个最大的子集,使得这个子集中速度的最大值和最小值之差不超过10,并输出这个最大子集的大小。

为了有效地解决这个问题,可以采用排序和滑动窗口技术相结合的方法。首先,将所有赛车的速度进行排序。排序后,我们可以利用滑动窗口来维护一个满足条件的区间。滑动窗口的左侧代表当前区间的起始位置,右侧代表区间的结束位置。窗口内的所有速度都在一个有效的范围内,即最大值和最小值的差不超过10。在排序后的速度列表中,最大值和最小值分别对应于窗口的右端和左端。

在滑动窗口的过程中,右指针不断向右移动以扩展窗口。当窗口内的最大速度和最小速度的差超过10时,左指针向右移动以缩小窗口的大小,确保窗口内的速度差不超过10。在每次调整窗口的大小时,记录下当前窗口的大小,并与历史最大值进行比较,以便找出满足条件的最大车队的大小。这种方法的优势在于它不需要遍历所有可能的子集,而是通过线性扫描来找到最优解,从而大大提高了效率。在整个过程中,排序操作的时间复杂度为O(n log n),而滑动窗口的遍历操作为O(n)。因此,整个算法的时间复杂度为O(n log n),这使得该算法能够在合理的时间内处理较大的输入规模。

三、代码

这段代码首先从标准输入读取整个输入,然后将输入的字符串分割成一个列表。第一个元素被转换为数整以表示赛车的数量n,随后的n个元素被转换为整数列表speed。对speed进行排序后,初始化左指针left为0,max_count为1。然后,通过一个循环遍历速度列表,使用右指针right向右扩展窗口,同时检查窗口内的速度差是否超过10。如果超过,则移动左指针left以缩小窗口,确保窗口内的速度差不超过10。在每次调整窗口的大小时,比较当前窗口的大小和历史最大值,并更新max_count。最后,输出max_count作为结果。

def main():import sysinput = sys.stdin.read().split()n = int(input[0])speed = list(map(int, input[1:n+1]))speed.sort()max_count = 1left = 0for right in range(n):while speed[right] - speed[left] > 10:left += 1current_length = right - left + 1if current_length > max_count:max_count = current_lengthprint(max_count)if __name__ == "__main__":main()
  1. 读取输入:

    • 使用 sys.stdin.read() 读取整个输入,并将其分割成一个列表。

    • 第一个元素是整数 n,表示赛车的数量。

    • 接下来的 n 个元素是赛车的速度,存储在列表 speed 中。

  2. 排序:

    • 对速度列表进行排序,以便可以使用滑动窗口技术来查找满足条件的车队。

  3. 初始化:

    • max_count 用于记录找到的最大车队大小,初始化为1(因为至少有一辆车可以组成一个车队)。

    • left 是滑动窗口的左指针,初始化为0。

  4. 滑动窗口:

    • 使用右指针 right 遍历速度数组。

    • 对于每个右指针位置,检查当前窗口内的速度差是否超过10。

    • 如果速度差超过10,移动左指针以缩小窗口,直到速度差满足条件。

    • 计算当前窗口的大小,并更新 max_count5。

. 输出结果:

  • 最后,输出 max_count,即找到的最大车队大小。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯2025年校招笔试真题手撕(二)

一、题目 最近以比特币为代表的数字货币市场非常动荡&#xff0c;聪明的小明打算用马尔科夫链来建模股市。如图所示&#xff0c;该模型有三种状态&#xff1a;“行情稳定”&#xff0c;“行情大跌”以及“行情大涨”。每一个状态都以一定的概率转化到下一个状态。比如&#xf…

华为2025年校招笔试真题手撕教程(一)

一、题目 输入&#xff1a; 第一行为记录的版本迭代关系个数N&#xff0c;范围是[1&#xff0c;100000]; 第二行到第N1行&#xff1a;每行包含两个字符串&#xff0c;第一个字符串为当前版本&#xff0c;第二个字符串为前序版本&#xff0c;用空格隔开。字符串包含字符个数为…

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙&#xff0c;m 个锁&#xff0c;每把锁只能由一把特定的钥匙打开&#xff0c;其他钥匙都无法打开。一把钥匙可能可以打开多把锁&#xff0c;钥匙也可以重复使用。 对于任意一把锁来说&#xff0c;打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…

mysql都有哪些锁?

MySQL中的锁机制是确保数据库并发操作正确性和一致性的重要组成部分&#xff0c;根据锁的粒度、用途和特性&#xff0c;可以分为多种类型。以下是MySQL中常见的锁及其详细说明&#xff1a; 一、按锁的粒度划分 行级锁&#xff08;Row-level Locks&#xff09; 描述&#xff1a;…

JVM——JNI 的运行机制

引入 在 Java 开发中&#xff0c;我们常常会遇到一些 Java 语言难以直接处理的场景&#xff0c;例如需要调用特定体系架构或操作系统的功能&#xff0c;或者利用汇编语言的 SIMD 指令来优化关键代码性能。这时&#xff0c;Java Native Interface&#xff08;JNI&#xff09;就…

Oracle中的[行转列]与[列转行]

目录 一、原始数据 二、行转列的多种实现方式 1.CASE WHEN 2.DECODE 3.PIVOT(Oracle独有) 4.使用LEAD开窗函数 三、列转行的多种实现方式 1.UNPIVOT(Oracle独有) 2.UNION ALL合并结果集 四、行转列练习&#xff1a;CASE WHEN/DECODE/PIVOT/lag/LEAD 1.CASE WHEN 2…

MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战

MyBatis实战指南&#xff08;二&#xff09;如何实现小鸟图标与导入Teacher数据库表实战 前言一、如何实现小鸟图标二、导入Teacher数据库表实战步骤一&#xff1a;在pojo文件下创建Teacher类步骤二&#xff1a;在mapper下创建TeacherMapper接口步骤三&#xff1a;在rescources…

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员 本文以真实场景还原的互联网大厂Java面试故事&#xff0c;严肃的面试官与搞笑的水货程序员谢飞机的对话形式&#xff0c;涵盖核心Java、JUC、多线程、线程池、SpringBoot、MyBatis、Dubbo、RabbitMQ、xxl-job、…

JWT笔记

目录 1.JWT简介2.JWT作用3.传统Session4.JWT的结构5.JWT的请求流程 6.SpringBoot集成JWT 1.JWT简介 JWT&#xff08;JSON web token&#xff09;&#xff0c;也就是通过JSON形式作为Web应用中的令牌&#xff0c;用于在各方之间安全地将信息作为JSON对象传输&#xff0c;在数据传…

Docker 镜像调试最佳实践

当你已经构建了一个 Docker 镜像&#xff0c;但运行它的容器启动后立即退出&#xff08;通常是因为服务异常或配置错误&#xff09;&#xff0c;你仍然可以通过以下几种方式进入镜像内部进行调试。 ✅ 最佳实践&#xff1a;如何对一个“启动即退出”的镜像进行命令行调试&#…

TypeScript小技巧使用as const:让类型推断更精准。

文章目录 前言什么是 as const&#xff1f;为什么需要 as const&#xff1f;as const的使用场景1. 保留字面量类型2. 处理元组类型3. 函数调用中的类型匹配 实际应用示例示例 1&#xff1a;配置对象示例 2&#xff1a;枚举替代方案 总结 前言 作为一名前端开发者&#xff0c;在…

LangGraph-agent-天气助手

用于创建agent和多代理工作流 循环&#xff08;有迭代次数&#xff09;、可控、持久 安装langgraph包 conda create --name agent python3.12 conda activate agent pip install -U langgraph pip install langchain-openai设置 windows&#xff08;>结尾&#xff09; s…