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

思路:

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

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;
}
相关推荐
gihigo19982 小时前
matlab 基于瑞利衰落信道的误码率分析
算法
foxsen_xia2 小时前
go(基础06)——结构体取代类
开发语言·算法·golang
foxsen_xia2 小时前
go(基础08)——多态
算法·golang
leoufung2 小时前
用三色 DFS 拿下 Course Schedule(LeetCode 207)
算法·leetcode·深度优先
im_AMBER3 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
C雨后彩虹3 小时前
机器人活动区域
java·数据结构·算法·华为·面试
MarkHD4 小时前
车辆TBOX科普 第53次 三位一体智能车辆监控:电子围栏算法、驾驶行为分析与故障诊断逻辑深度解析
算法
苏小瀚4 小时前
[算法]---路径问题
数据结构·算法·leetcode
月明长歌5 小时前
【码道初阶】一道经典简单题:多数元素(LeetCode 169)|Boyer-Moore 投票算法详解
算法·leetcode·职场和发展
wadesir5 小时前
C语言模块化设计入门指南(从零开始构建清晰可维护的C程序)
c语言·开发语言·算法