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

思路:

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

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;
}
相关推荐
墨染点香2 分钟前
LeetCode 刷题【126. 单词接龙 II】
算法·leetcode·职场和发展
aloha_78926 分钟前
力扣hot100做题整理91-100
数据结构·算法·leetcode
Tiny番茄31 分钟前
31.下一个排列
数据结构·python·算法·leetcode
挂科是不可能出现的31 分钟前
最长连续序列
数据结构·c++·算法
前端小L1 小时前
动态规划的“数学之魂”:从DP推演到质因数分解——巧解「只有两个键的键盘」
算法·动态规划
RTC老炮2 小时前
webrtc弱网-ReceiveSideCongestionController类源码分析及算法原理
网络·算法·webrtc
21号 12 小时前
9.Redis 集群(重在理解)
数据库·redis·算法
hadage2333 小时前
--- 数据结构 AVL树 ---
数据结构·算法
liu****3 小时前
8.list的使用
数据结构·c++·算法·list
阿拉丁的梦4 小时前
后期材质-屏幕冲击径向模糊
算法·材质