416 分割等和子集
https://leetcode.cn/problems/partition-equal-subset-sum/description/
dfs做会超时,dp做,dp[i][j]表示前i个数里和为j的可能性。
class Solution {
public boolean canPartition(int[] nums) { // dp[i][j] 前i个数和为j
int sum = 0;
for (int num : nums) {
sum += num;
}
if (sum % 2 == 1) return false;
sum /= 2;
boolean[] dp = new boolean[sum + 1];
dp[0] = true;
for (int i = 0; i < nums.length; i++) {
for (int j = sum; j >= nums[i]; j--) { //j >= nums[i] 不写会超界
dp[j] = dp[j] || dp[j - nums[i]];
}
}
return dp[sum];
}
}