一、动态规划:01背包理论基础
挺详细的代码随想录 (programmercarl.com)
二、动态规划:01背包理论基础(滚动数组)
代码随想录 (programmercarl.com)
三、 分割等和子集
416. 分割等和子集 - 力扣(LeetCode)
public class Solution {
public boolean canPartition(int[] nums) {
int len = nums.length;
int sum = 0;
for (int num : nums) {
sum += num;
}
if ((sum & 1) == 1) {
return false;
}
int target = sum / 2;
boolean[] dp = new boolean[target + 1];
dp[0] = true;
if (nums[0] <= target) {
dp[nums[0]] = true;
}
for (int i = 1; i < len; i++) {
for (int j = target; nums[i] <= j; j--) {
if (dp[target]) {
return true;
}
dp[j] = dp[j] || dp[j - nums[i]];
}
}
return dp[target];
}
}
这个题解挺好416. 分割等和子集 - 力扣(LeetCode)