2218. 从栈中取出 K 个硬币的最大面值和
考点
- 分组背包
- 前缀和
思路
假设有个容量为3的栈,那么它可以产生:
- 体积为1,价值为
a[0] - 体积为2,价值为
a[0] + a[1] - 体积为3,价值为
a[0] + a[1] + a[2]
三种情况选一个,是分组背包的裸题,直接看代码
1 | class Solution { |
当然,可以压掉第一维,j注意逆序即可
1 | class Solution { |
当然还可以再优化,提前用前缀和避免后续的重复计算
1 | class Solution { |
假设有个容量为3的栈,那么它可以产生:
a[0]a[0] + a[1]a[0] + a[1] + a[2]三种情况选一个,是分组背包的裸题,直接看代码
1 | class Solution { |
当然,可以压掉第一维,j注意逆序即可
1 | class Solution { |
当然还可以再优化,提前用前缀和避免后续的重复计算
1 | class Solution { |