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),排序需要占用的额外空间。


写在最后

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

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

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

相关推荐
一碗白开水一9 分钟前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
仰泳的熊猫40 分钟前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
Tisfy1 小时前
LeetCode 1888.使二进制字符串字符交替的最少反转次数:前缀和O(1)
算法·leetcode·字符串·题解
2301_803554521 小时前
linux 以及 c++编程里对于进程,线程的操作
linux·运维·c++
滴滴答滴答答2 小时前
机考刷题之 9 LeetCode 503 下一个更大元素 II
算法·leetcode·职场和发展
飞Link2 小时前
梯度下降的优化算法中,动量算法和指数加权平均的区别对比
人工智能·深度学习·算法
啊哦呃咦唔鱼2 小时前
LeetCode hot100-15 三数之和
数据结构·算法·leetcode
_日拱一卒2 小时前
LeetCode(力扣):杨辉三角||
算法·leetcode·职场和发展
rqtz2 小时前
基于I2C总线的IMU-磁力计融合算法与数据共享
算法·iic·espidf·qmc5883p·icm42670p·imu磁力计融合