【贪心算法】在有盾牌的情况下能通过每轮伤害的最小值(亚马逊笔试题)

思路:

采用贪心算法,先计算出来所有的伤害值,然后再计算每轮在使用盾牌的情况下能减少伤害的最大值,最后用总的伤害值减去能减少的最大值就是最少的总伤害值

java 复制代码
public static long getMinimumValue(List<Integer> power, int armor) {
    long totalDamage = 0;
    int maxReduction = 0;
    for (int p : power) {
        totalDamage += p;
        // 护甲在该轮能减少的伤害
        int reduction = Math.min(p, armor);
        if (reduction > maxReduction) {
            maxReduction = reduction;
        }
    }
    // 总伤害 - 最大减少量 + 1(保证血量>0)
    return totalDamage - maxReduction + 1;
}
相关推荐
明明如月学长1 小时前
什么你不知道 Cherry Studio 有快捷助手?
算法
Vegetable_Dragon1 小时前
数论1.01
算法
Star在努力1 小时前
15-C语言:第15天笔记
c语言·笔记·算法
我有一计3331 小时前
【算法笔记】5.LeetCode-Hot100-矩阵专项
人工智能·算法·程序员
行然梦实2 小时前
KnEA(Knee-point-driven Evolutionary Algorithm)简介
人工智能·算法·机器学习
qq_513970442 小时前
力扣 hot100 Day58
算法·leetcode
liulilittle3 小时前
DDD领域驱动中瘦模型与富态模型的核心区别
开发语言·c++·算法·ddd·领域驱动·思想
Das13 小时前
【初识数据结构】CS61B 中的归并排序和选择排序
数据结构·算法·排序算法
竹子_235 小时前
二分法详解:用生活例子 + 图示
python·算法·生活
用户4822137167756 小时前
Python——正则表达式(字符匹配-贪婪模式)
算法