๐ ๐ 494. ็ฎๆ ๅ
2022ๅนด6ๆ9ๆฅๅฐไบ 1 ๅ้
๐ ๐ 494. ็ฎๆ ๅ
้พๅบฆ: ๐ ๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public int findTargetSumWays(int[] nums, int target) {
// ๆ่ทฏ๏ผ
// pos + neg = sum
// pos - neg = target
// =>
// pos = (sum + target) / 2
// neg = (sum - target) / 2
// ่ๅ
้ฎ้ข
int sum = 0;
for(int i : nums) {
sum += i;
}
// ็นๆฎๆ
ๅต็นๅค
if(Math.abs(target) > Math.abs(sum)) {
return 0;
}
int res = sum + target;
if((res & 1) == 1) {
return 0;
}
res /= 2;
// dp[i] : ้้ไธบ i ๆถๆๅคๅฐ็งๆ
ๅต
int[] dp = new int[res + 1];
dp[0] = 1;
int len = nums.length;
for(int j = 0; j < len; j ++) {
for(int i = res; i - nums[j] >= 0; i --) {
dp[i] += dp[i - nums[j]];
}
}
return dp[res];
}
}