Solution 1: Recursion (brute force)
The most straightforward (and least efficient) solution is to explore every possibility using a backtracking algorithm.
xxxxxxxxxx
27
class Main {
public static int findTargetSumWays(int[] nums, int s) {
return backtrack(nums, 0, 0, s);
}
​
private static int backtrack(int[] nums, int index, int sum, int s) {
if (index == nums.length) {
return sum == s ? 1 : 0;
}
return backtrack(nums, index + 1, sum + nums[index], s)
+ backtrack(nums, index + 1, sum - nums[index], s);
}
public static void main(String[] args) {
int[] nums = {
8,
7,
1,
5,
3,
8,
11,
6,
14
};
System.out.println(findTargetSumWays(nums, 15));
}
}
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment