2025-02-14:与敌人战斗后的最大分数。用go语言,给定一个从0开始的整数数组 enem)yEnergies,表示敌人的能量值,以及一个整数 currentEnergy,表示你初始的能量总量。你的初始得分为0,并且所有敌人开始时都是未标记的。
你可以进行以下两种操作任意次数(包括0次)以得分:
1.选择一个未标记的敌人 i,前提是 currentEnergy 大于等于 enemyEnergies[i]。此操作会使你获得1分,并且你的能量值减少 enemyEnergies[i],即 currentEnergy 更新为 currentEnergy - enemyEnergies[i]。
2.如果你当前得分至少为1,你可以选择一个未标记的敌人 i,此时你的能量值将增加 enemyEnergies[i],即 currentEnergy 更新为 currentEnergy + enemyEnergies[i],同时该敌人会被标记。
最终,你需要计算通过这些操作可以获得的最高分数。
1 <= enemyEnergies.length <= 100000。
1 <= enemyEnergies[i] <= 1000000000。
0 <= currentEnergy <= 1000000000。
输入:enemyEnergies = [3,2,2], currentEnergy = 2。
输出:3。
解释:
通过以下操作可以得到最大得分 3 分:
对敌人 1 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 1 且 currentEnergy = 0 。
对敌人 0 使用第二种操作:currentEnergy 增加 3 ,敌人 0 被标记。所以 points = 1 ,currentEnergy = 3 ,被标记的敌人包括 [0] 。
对敌人 2 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 2 且 currentEnergy = 1 ,被标记的敌人包括[0] 。
对敌人 2 使用第二种操作:currentEnergy 增加 2 ,敌人 2 被标记。所以 points = 2 ,currentEnergy = 3 且被标记的敌人包括 [0, 2] 。
对敌人 1 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 3 ,currentEnergy = 1 ,被标记的敌人包括 [0, 2] 。
答案2025-02-14:
chatgpt[1]
题目来自leetcode3207。
package main
import (
"fmt"
"math"
)
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 {
return0
}
returnint64((currentEnergy + s - mn) / mn)
}
func main() {
enemyEnergies := []int{3,2,2}
currentEnergy := 2
result := maximumPoints(enemyEnergies,currentEnergy)
fmt.Println(result)
}
fn maximum_points(enemy_energies: &[i32], current_energy: i32) ->i64 {
// 找出最小值和总和
letmn = enemy_energies.iter().min().cloned().unwrap_or(0);
lets: i32 = enemy_energies.iter().sum();
// 如果当前能量小于最小敌人能量,返回0
if current_energy < mn {
return0;
}
// 计算最大可获得点数
((current_energy + s - mn) / mn) asi64
}
fnmain() {
letenemy_energies = vec![3, 2, 2];
letcurrent_energy = 2;
letresult = maximum_points(&enemy_energies, current_energy);
println!("{}", result);
}
# -*-coding:utf-8-*-
defmaximum_points(enemy_energies, current_energy):
min_energy = float('inf')
total_energy = 0
for e in enemy_energies:
min_energy = min(min_energy, e)
total_energy += e
if current_energy < min_energy:
return0
return (current_energy + total_energy - min_energy) // min_energy
if __name__ == "__main__":
enemy_energies = [3, 2, 2]
current_energy = 2
result = maximum_points(enemy_energies, current_energy)
print(result)
[1]
chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP