494. 目标和
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了494. 目标和相关的知识,希望对你有一定的参考价值。
494. 目标和
思路
- 该表达式由 加法和 x 与 减法和 sum-x 构成;题目求 x - (sum - x) = target,x = (target + sum) / 2;
- 将 加法和 x 作为背包重量,转换为01背包问题
- 有两种情况无解,1. (target + sum) 为奇数不能整除,得不到 x。例如 【1,1】的 sum = 2,target = 1; 1+2为奇数,无解。2. 绝对值 target 大于 sum,例如 target = 10,sum = 2;
- dp[0] = 1;求组合数/背包装法的递推公式一般为 dp[ j ] += dp[ j - nums[ i ] ]
class Solution
public int findTargetSumWays(int[] nums, int target)
int sum = 0;
for(int num : nums) sum += num;
if(Math.abs(target) > sum) return 0;
if((target + sum) % 2 == 1) return 0;
int size = (target + sum) / 2;
int[] dp = new int[size + 1];
dp[0] = 1;
for(int i = 0;i < nums.length;i++)
for(int j = size;j >= nums[i];j--)
dp[j] += dp[j - nums[i]];
return dp[size];
以上是关于494. 目标和的主要内容,如果未能解决你的问题,请参考以下文章