← All problems

377. Combination Sum IV

MediumOpen on LeetCodeProblem statement

Problem Statement

377. Combination Sum IV

Medium


Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target.

The test cases are generated so that the answer can fit in a 32-bit integer.

 

Example 1:

Input: nums = [1,2,3], target = 4
Output: 7
Explanation:
The possible combination ways are:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
Note that different sequences are counted as different combinations.

Example 2:

Input: nums = [9], target = 3
Output: 0

 

Constraints:

 

Follow up: What if negative numbers are allowed in the given array? How does it change the problem? What limitation we need to add to the question to allow negative numbers?

C++

Source file
class Solution {
public:
    vector<int> dp;
    
    Solution() {
        dp.resize(1001);
        fill(dp.begin(), dp.end(), -1);
    }
    int combinationSum4(vector<int>& nums, int target, int sum=0) {
        if(sum>target) return 0; // overshoot
        else if (sum==target) return 1; // counter++
        else if (dp[sum]!=-1) return dp[sum]; // if memoised already
        int res=0;
        for (auto n: nums){
            if(sum+n<=target)
                res+=combinationSum4(nums, target, sum+n);
        }
        return dp[sum] = res;
    }
};