前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2025-02-14:与敌人战斗后的最大分数。用go语言,给定一个从0开始的整数数组 enemyEnergies,表示敌人的能量

2025-02-14:与敌人战斗后的最大分数。用go语言,给定一个从0开始的整数数组 enemyEnergies,表示敌人的能量

作者头像
福大大架构师每日一题
发布2025-02-19 12:46:47
发布2025-02-19 12:46:47
3900
代码可运行
举报
文章被收录于专栏:福大大架构师每日一题
运行总次数:0
代码可运行

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。

大体步骤如下:

Go完整代码如下:

代码语言:javascript
代码运行次数:0
复制
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)
}
在这里插入图片描述
在这里插入图片描述

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
复制
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);
}
在这里插入图片描述
在这里插入图片描述

Python完整代码如下:

代码语言:javascript
代码运行次数:0
复制
# -*-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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
  • Python完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档