1921. Eliminate Maximum Number of Monsters
你在玩一个从怪物手中保护城市的电子游戏
一共有n只怪物
第i只怪物距离dist[i]公尺
并以spped[i]公尺/分的速度朝城市前进
如果怪物到达城市便输了并结束游戏
你有一把武器需要充能后便可使用
使用一次可消灭一只怪物
接下来需要一分钟的时间充能
游戏开始时武器是已经完整充能的状态
如果充能完毕的同时怪物到达城市
则你没办法消灭那只怪物并同时判输
回传在你输之前能消灭的最大怪物数量
或是你不会输的话就回传总怪物数量n
题目叙述不少但机制其实蛮单纯的
Approach:
蛮简单的题目
可能是因为本身就在做游戏的关系
这种应用题对我而言本来就是游戏设计的过程中会进行的脑中模拟
先把所有怪物的到达时间算出来
就能知道每只怪物多久会到达城市
之后排序后跑一次循环
看什么时候index >= 到达时间
就能知道最多能消灭几只怪物
TS Code:
function eliminateMaximum (dist: number[], speed: number[]): number {
const time: number[] = []
for (let i = 0; i < dist.length; i++) {
time.push(Math.ceil(dist[i] / speed[i]))
}
time.sort((a, b) => (a - b))
for (let i = 0; i < time.length; i++) {
if (i >= time[i])return i
}
return time.length
}