法1:动态规划
想法:
- 将两个子集看作背包(容量均为数组元素和 / 2),数组中的数字作为物品(每个数字的值作为每个物品的体积)
- 问题:如何使得两个背包背的物品体积相等呢? 回答:只需要使得一个背包可以正好装满即可!
- 数组dp表示:容量为0~(数组元素和 / 2)的背包,可以容纳的物品的最大体积和
/**
* @param {number[]} nums
* @return {boolean}
*/
var canPartition = function(nums) {
// 将两个子集看作背包(容量均为数组元素和/2),数组中的数字作为物品
// 如何使得两个背包背的物品体积相等呢?
// 只需要使得一个背包可以正好装满即可!
var sum = 0, i = 0, j = 0, dp