494. Target Sum

DFS (backtracking)

T: O(2^n)

S:O(n)

class Solution {
    public int findTargetSumWays(int[] nums, int target) {
        int[] result = new int[1];
        backtracking(0, nums, target, result);
        return result[0];
    }
    private void backtracking(int start, int[] nums, int remain, int[] result) {
        if (start == nums.length) {
            if (remain == 0) {
                result[0]++;
            }
            return;
        }

        remain += nums[start];
        backtracking(start+1, nums, remain, result);
        remain -= nums[start];

        remain -= nums[start];
        backtracking(start+1, nums, remain, result);
        remain += nums[start];
    }
}

DFS + memo

T: O(t*n), t is target range (-2000 to 2000), n is nums length

S:O(t*n)

new one

Last updated

Was this helpful?