LeetCode刷题日记(1921. 消灭怪物的最大数量)

'''
你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。
给你一个下标从0开始且长度为n的整数数组dist,
其中dist[i]是第i个怪物与城市的初始距离(单位:米)。

怪物以恒定的速度走向城市。
给你一个长度为n的整数数组speed表示每个怪物的速度,
其中speed[i]是第i个怪物的速度(单位:米/分)。

怪物从第0分钟时开始移动。
你有一把武器,并可以选择在每一分钟的开始时使用,包括第0分钟。
但是你无法在一分钟的中间使用武器。这种武器威力惊人,一次可以消灭任一还活着的怪物。
一旦任一怪物到达城市,你就输掉了这场游戏。
如果某个怪物恰在某一分钟开始时到达城市,这会被视为输掉游戏,在你可以使用武器之前,游戏就会结束。
返回在你输掉游戏前可以消灭的怪物的最大数量。
如果你可以在所有怪物到达城市前将它们全部消灭,返回n。
'''

from typing import List


class Solution:
    def eliminateMaximum(self, dist: List[int], speed: List[int]) -> int:
        n = len(dist)
        # 计算怪物到达时间 排序
        arrive_time = [dist[i] // speed[i] if dist[i] % speed[i] == 0 else dist[i] // speed[i] + 1 for i in
                       range(len(dist))]
        arrive_time.sort()
        # i + 1代表实际时间 arrive_time为理论到达时间
        # 如果理论时间<实际时间 说明怪兽成功入侵
        for i in range(n):
            if arrive_time[i] < i + 1:
                return i
        return n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值