力扣动态规划-28【算法学习day.122】

前言

###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.执行操作可获得的最大总奖励I

题目链接:3180. 执行操作可获得的最大总奖励 I - 力扣(LeetCode)

题面:力扣动态规划-28【算法学习day.122】_第1张图片

附上灵神代码: 

import java.math.BigInteger;

class Solution {
    public int maxTotalReward(int[] rewardValues) {
        int m = 0;
        for (int v : rewardValues) {
            m = Math.max(m, v);
        }
        for (int v : rewardValues) {
            if (v == m - 1) {
                return m * 2 - 1;
            }
        }

        BigInteger f = BigInteger.ONE;
        for (int v : Arrays.stream(rewardValues).distinct().sorted().toArray()) {
            BigInteger mask = BigInteger.ONE.shiftLeft(v).subtract(BigInteger.ONE);
            f = f.or(f.and(mask).shiftLeft(v));
        }
        return f.bitLength() - 1;
    }
}

后言

上面是动态规划相关的习题,共勉力扣动态规划-28【算法学习day.122】_第2张图片

你可能感兴趣的:(#,动态规划,算法,算法,leetcode,动态规划,java,学习)