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

思路:

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

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;
}
相关推荐
xinxiangwangzhi_1 分钟前
多视图几何--恢复相机位姿/内参的几种方法
图像处理·算法·计算机视觉
lisanndesu37 分钟前
贪心算法--
算法·贪心算法
巷95539 分钟前
机器学习篇——决策树基础
算法·决策树·机器学习
猎人everest41 分钟前
机器学习之正则化
人工智能·算法·机器学习
YaoSolar43 分钟前
刷题记录(LeetCode 78 子集)
算法·leetcode
熊峰峰1 小时前
数据结构第八节:红黑树(初阶)
开发语言·数据结构·c++·算法
f狐0狸x2 小时前
【蓝桥杯每日一题】3.8
数据结构·c++·算法·蓝桥杯
阿巴~阿巴~2 小时前
动态规划填表技巧:固定最后一个数 vs 固定倒数第二个数
c++·算法·动态规划
我感觉。2 小时前
【机器学习chp12】半监督学习(自我训练+协同训练多视角学习+生成模型+半监督SVM+基于图的半监督算法+半监督聚类)
人工智能·算法·机器学习·半监督学习
浊酒南街6 小时前
XGBClassifiler函数介绍
算法·机器学习·xgb