algorithm-problem-leetcode-3181
3181. 执行操作可获得的最大总奖励 II(2688): bitset优化,利用BigInteger大数(bitset)的数值运算代替原本j的for循环
给你一个整数数组 rewardValues
,长度为 n
,代表奖励的值。
最初,你的总奖励 x
为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 :
- 从区间
[0, n - 1]
中选择一个 未标记 的下标i
。 - 如果
rewardValues[i]
大于 你当前的总奖励x
,则将rewardValues[i]
加到x
上(即x = x + rewardValues[i]
),并 标记 下标i
。
以整数形式返回执行最优操作能够获得的 最大 总奖励。
示例 1:
**输入:**rewardValues = [1,1,3,3]
**输出:**4
解释:
依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。
示例 2:
**输入:**rewardValues = [1,6,4,3,2]
**输出:**11
解释:
依次标记下标 0、2 和 1。总奖励为 11,这是可获得的最大值。
提示:
1 <= rewardValues.length <= 5 * 10^4
1 <= rewardValues[i] <= 5 * 10^4
思路:动态规划,01背包,Bitset优化
bitset优化,利用BigInteger大数(bitset)的数值运算代替原本j的for循环
原本的解法:3180. 执行操作可获得的最大总奖励 I
1 | import java.math.BigInteger; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BUGHERE の 博客!
评论