diff --git a/problems/0494.目标和.md b/problems/0494.目标和.md index 1a4dda2b..2d38b4d0 100644 --- a/problems/0494.目标和.md +++ b/problems/0494.目标和.md @@ -275,19 +275,23 @@ class Solution { public int findTargetSumWays(int[] nums, int target) { int sum = 0; for (int i = 0; i < nums.length; i++) sum += nums[i]; - //如果target过大 sum将无法满足 - if ( target < 0 && sum < -target) return 0; - if ((target + sum) % 2 != 0) return 0; - int size = (target + sum) / 2; - if(size < 0) size = -size; - int[] dp = new int[size + 1]; + + //如果target的绝对值大于sum,那么是没有方案的 + if (Math.abs(target) > sum) return 0; + //如果(target+sum)除以2的余数不为0,也是没有方案的 + if ((target + sum) % 2 == 1) return 0; + + int bagSize = (target + sum) / 2; + int[] dp = new int[bagSize + 1]; dp[0] = 1; + for (int i = 0; i < nums.length; i++) { - for (int j = size; j >= nums[i]; j--) { + for (int j = bagSize; j >= nums[i]; j--) { dp[j] += dp[j - nums[i]]; } } - return dp[size]; + + return dp[bagSize]; } } ```