class Solution {
public:
int getSum(vector<int>& nums) {
int sum = 0;
for (auto& elem : nums) {
sum += elem;
}
return sum;
}
int findTargetSumWays(vector<int>& nums, int target) {
int sum = getSum(nums);
if (abs(target) > sum)
return 0;
if ((sum + target) % 2 != 0)
return 0;
int bagSize = (sum + target) / 2;
//declare DP array
vector<int> dp(bagSize + 1);
//init
dp[0] = 1;
//iterate
for (int i = 0; i < nums.size(); i++) {
for (int j = bagSize; j >= nums[i]; j--) {
dp[j] += dp[j - nums[i]];
}
}
return dp[bagSize];
}
};
LeetCode494.目标和(01背包)
最新推荐文章于 2024-08-10 15:25:17 发布