背包问题
0-1 背包
求 target
416. 分割等和子集(0-1背包)
本题要求把数组分成两个等和的子集,相当于找到一个子集,其和为 sum / 2,这个 sum / 2 就是 target(target 间接给出)。
于是转化为是否可以用 nums 中的数组合和成 target
1049. 最后一块石头的重量 II
有一堆石头,用整数数组 stones
表示。其中 stones[i]
表示第 i
块石头的重量。
每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x
和 y
,且 x <= y
。那么粉碎的可能结果如下:
- 如果
x == y
,那么两块石头都会被完全粉碎; - 如果
x != y
,那么重量为x
的石头将会完全粉碎,而重量为y
的石头新重量为y-x
。
最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0
。
示例 1:
输入:stones = [2,7,4,1,8,1] 输出:1 解释: 组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1], 组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1], 组合 2 和 1,得到 1,所以数组转化为 [1,1,1], 组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。
从 stonesstones 数组中选择,凑成总和不超过 num/2 的最大价值。
494. 目标和(01背包)
给你一个整数数组 nums 和一个整数 target 。
向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :
例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。
返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。
示例 1:
输入:nums = [1,1,1,1,1], target = 3
输出:5
解释:一共有 5 种方法让最终目标和为 3 。
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3
我们想要的 S = 正数和 - 负数和 = x - y
而已知 x 与 y 的和是数组总和:x + y = sum
可以求出 x = (S + sum) / 2 = target
也就是我们要从 nums 数组里选出几个数,令其和为 target(target 间接给出)。
于是转化为是否可以用 nums 中的数组合和成 target
三维
474. 一和零
879. 盈利计划
完全背包
无序组合数:
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。
假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
示例 1:
输入:amount = 5, coins = [1, 2, 5]
输出:4
解释:有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
有序组合数:
70. Climbing Stairs(动态规划 爬台阶,一次只能爬1,2两节,组合)
377. 组合总和 Ⅳ(dp)
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
题目数据保证答案符合 32 位整数范围。
示例 1:
输入:nums = [1,2,3], target = 4
输出:7
解释:
所有可能的组合为:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
请注意,顺序不同的序列被视作不同的组合。
求最短组合
279. 完全平方数(dp完全背包)
139. 单词拆分
背包问题(目录)
01背包 : 背包问题 第一讲
【练习】01背包 : 背包问题 第二讲(416. 分割等和子集)
【学习&练习】01背包 : 背包问题 第三讲(416. 分割等和子集)
完全背包 : 背包问题 第四讲
【练习】完全背包 : 背包问题 第五讲(279. 完全平方数)
【练习】完全背包 : 背包问题 第六讲(322. 零钱兑换)
【练习】完全背包 : 背包问题 第七讲(518. 零钱兑换 II)
多重背包 : 背包问题 第八讲
多重背包(优化篇)
多重背包(优化篇): 背包问题 第九讲
多重背包(优化篇): 背包问题 第十讲
混合背包 : 背包问题 第十一讲
【练习】混合背包
分组背包
【练习】分组背包
多维背包
【练习】多维背包 : 背包问题 第 * 讲(474. 一和零)
【练习】多维背包 : 背包问题 第 * 讲(879. 盈利计划)
树形背包
【练习】树形背包
背包求方案数
【练习】背包求方案数 : 背包问题 第 * 讲(494. 目标和)
【练习】背包求方案数 : 背包问题 第 * 讲(879. 盈利计划)
背包求具体方案
【练习】背包求具体方案 : 背包问题 第 * 讲(1049. 最后一块石头的重量 II)
泛化背包
【练习】泛化背包
作者:AC_OIer
链接:https://leetcode-cn.com/problems/coin-change-2/solution/gong-shui-san-xie-xiang-jie-wan-quan-bei-6hxv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。