Solution 1: Recursion (brute force)
The most straightforward (and least efficient) solution is to explore every possibility using a backtracking algorithm.
xxxxxxxxxx27
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

