Leetcode494:目标和
-
题目:
-
给你一个整数数组 nums 和一个整数 target 。
向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :
例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。
返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。
-
-
思路:回溯算法
-
代码如下:
class Solution {
int res = 0;
int sum = 0;
public int findTargetSumWays(int[] nums, int target) {
int n = nums.length;
backtrack(nums,0,target);
return res;
}
void backtrack(int[] nums,int startIndex, int target){
if(nums.length == startIndex && target != sum){
return;
}
if(nums.length == startIndex && target == sum){
res++;
return;
}
sum += nums[startIndex];
backtrack(nums,startIndex+1,target);
sum -= nums[startIndex];
sum -= nums[startIndex];
backtrack(nums,startIndex+1,target);
sum += nums[startIndex];
}
}