问题
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。
返回可以使最终数组和为目标数 S 的所有添加符号的方法数。
例子
思路
-
方法1
回溯
-
方法2
代码
//方法1
class Solution {
private int res = 0;
public int findTargetSumWays(int[] nums, int k) {
get(nums,k,0,0);
return res;
}
public void get(int[] nums, int k, int i,int sum) {
if(i==nums.length){
if(sum==k) res+=1;
return ;
}
get(nums,k,i+1,sum+nums[i]);
get(nums,k,i+1,sum-nums[i]);
}
}
//方法2