列表

详情


100182. 与敌人战斗后的最大分数

给你一个下标从 0 开始的整数数组 enemyEnergies ,它表示一个下标从 0 开始的敌人能量数组。

同时给你一个整数 currentEnergy ,它表示你一开始拥有的能量值总量。

你一开始的分数为 0 ,且一开始所有的敌人都未标记。

你可以通过以下操作 之一 任意次(也可以 0 次)来得分:

请你返回通过以上操作,最多 可以获得多少分。

 

示例 1:

输入:enemyEnergies = [3,2,2], currentEnergy = 2

输出:3

解释:

通过以下操作可以得到最大得分 3 分:

示例 2:

输入:enemyEnergies = [2], currentEnergy = 10

输出:5

解释:

通过对敌人 0 进行第一种操作 5 次,得到最大得分。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: long long maximumPoints(vector<int>& enemyEnergies, int currentEnergy) { } };

php 解法, 执行用时: 191 ms, 内存消耗: 26.7 MB, 提交时间: 2024-07-09 10:17:33

class Solution {

    /**
     * @param Integer[] $enemyEnergies
     * @param Integer $currentEnergy
     * @return Integer
     */
    function maximumPoints($enemyEnergies, $currentEnergy) {
        $mn = min($enemyEnergies);
        if ( $currentEnergy < $mn ) return 0;
        return intval(($currentEnergy + array_sum($enemyEnergies) - $mn) / $mn);
    }
}

golang 解法, 执行用时: 72 ms, 内存消耗: 8.2 MB, 提交时间: 2024-07-09 10:14:29

func maximumPoints(enemyEnergies []int, currentEnergy int) int64 {
	mn, s := math.MaxInt, 0
	for _, e := range enemyEnergies {
		mn = min(mn, e)
		s += e
	}
	if currentEnergy < mn {
		return 0
	}
	return int64((currentEnergy + s - mn) / mn)
}

cpp 解法, 执行用时: 155 ms, 内存消耗: 73.2 MB, 提交时间: 2024-07-09 10:14:15

class Solution {
public:
    long long maximumPoints(vector<int>& enemyEnergies, int currentEnergy) {
        int mn = ranges::min(enemyEnergies);
        if (currentEnergy < mn) {
            return 0;
        }
        long long s = reduce(enemyEnergies.begin(), enemyEnergies.end(), 0LL);
        return (currentEnergy + s - mn) / mn;
    }
};

java 解法, 执行用时: 1 ms, 内存消耗: 54.9 MB, 提交时间: 2024-07-09 10:14:04

public class Solution {
    public long maximumPoints(int[] enemyEnergies, int currentEnergy) {
        int mn = Integer.MAX_VALUE;
        long s = 0;
        for (int e : enemyEnergies) {
            mn = Math.min(mn, e);
            s += e;
        }
        if (currentEnergy < mn) {
            return 0;
        }
        return (currentEnergy + s - mn) / mn;
    }
}

python3 解法, 执行用时: 52 ms, 内存消耗: 30.5 MB, 提交时间: 2024-07-09 10:13:48

class Solution:
    def maximumPoints(self, enemyEnergies: List[int], currentEnergy: int) -> int:
        mn = min(enemyEnergies)
        if currentEnergy < mn:
            return 0
        return (currentEnergy + sum(enemyEnergies) - mn) // mn

上一题