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


写在最后

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

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

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

相关推荐
挥剑决浮云 -4 分钟前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
Mephisto.java18 分钟前
【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180
sql·算法·leetcode
robin_suli19 分钟前
滑动窗口->dd爱框框
算法
丶Darling.21 分钟前
LeetCode Hot100 | Day1 | 二叉树:二叉树的直径
数据结构·c++·学习·算法·leetcode·二叉树
labuladuo52031 分钟前
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)
数据结构·c++·算法
jiyisuifeng199142 分钟前
代码随想录训练营第54天|单调栈+双指针
数据结构·算法
小柯J桑_1 小时前
C++:STL简介
c++·stl
꧁༺❀氯ྀൢ躅ྀൢ❀༻꧂1 小时前
实验4 循环结构
c语言·算法·基础题
新晓·故知1 小时前
<基于递归实现线索二叉树的构造及遍历算法探讨>
数据结构·经验分享·笔记·算法·链表
咖啡里的茶i1 小时前
C++之继承
c++