39. Combination Sum

# Medium

class Solution:
    def helper(self, candidates, target, level, result, index, s):
        # stop condition
        if s > target:
            return
        elif s == target:
            result.append(level[:])
            return
        
        # regular case
        for i in range(index, len(candidates)):
            level.append(candidates[i])
            s = s + candidates[i]
            self.helper(candidates, target, level, result, i, s)
            level.pop()
            s = s - candidates[i]
        
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        # edge case
        result = []
        level = []
        if len(candidates) == 0:
            return result
        
        # regular case
        self.helper(candidates, target, level, result, 0, 0)
        return result

Last updated

Was this helpful?