1921. 消灭怪物的最大数量

文章目录

Tag

【贪心】【排序】【数组】


题目来源

1921. 消灭怪物的最大数量


题目解读

dist[i] 是第 i 个怪兽与城市的初始距离,speed[i] 是第 i 个怪兽的移动距离。怪兽的目的是攻击城市,你的目的是阻止怪兽攻击城市,为此你可以使用一把武器来消灭任意一个怪兽,这种武器一分钟只能消灭一只怪兽。一旦有怪兽到达城市,你就失败了,请返回你在失败之前可以消灭怪兽的最大数量。如果你可以在所有怪兽到达城市之前将它们全部消灭,返回 n


解题思路

方法一:贪心+排序

贪心思想,先消灭先要到达的怪兽,怪兽到达城市的先后,我们使用时间来衡量,具体的使用 arrivalTime[i] 来表示怪兽 i 到达城市的时间,arrivalTime[i] = (dist[i] + speed[i] - 1) / speed[i]

接着对所有怪兽到达城市的时间进行升序排序,然后遍历 arrivalTime 数组:

  • 如果 arrivalTime[i] <= i,说明第 i 的怪兽先到了城市,此时失败了,失败之前消灭的怪兽为 i 只,于是返回 i
  • 如果没有任何的 arrivalTime[i] <= i,说明我们可以在所有怪兽到达城市之前将它们全部消灭,于是返回 n

复杂度分析

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),排序花费的时间。

空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),排序需要占用的额外空间。


写在最后

以上就是本篇文章的内容了,感谢您的阅读。🍗🍗🍗

如果感到有所收获的话可以给博主点一个 👍 哦。

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出。💬💬💬

相关推荐
nbsaas-boot28 分钟前
多智能体系统的架构边界:任务编排、共享状态与故障隔离设计
人工智能·算法·动态规划
wuyk55544 分钟前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
吴声子夜歌1 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
JiNan.YouQuan.Soft1 小时前
数值计算引擎:计算固体力学
人工智能·算法·机器学习
和裕1 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
Pointer Pursuit2 小时前
C++11特性(二)
前端·c++·算法
lvwangshu2 小时前
数位 DP 进阶
算法·动态规划
她的男孩2 小时前
一个开源低代码框架的协作 SPI 是怎么设计的 ForgeAdmin 拆解 + 实战接入新平台
后端·算法·架构
OPEN-F2 小时前
C++20新特性精讲:概念、范围与三路比较
算法·c++20
tudousisi2223 小时前
CSP 第3题训练 Day 5|CSP202509C HTTP 头信息|Blog A
c++