diff --git a/Combination Sum - Leetcode 39/Combination Sum - Leetcode 39.py b/Combination Sum - Leetcode 39/Combination Sum - Leetcode 39.py index e69de29..2a1ac85 100644 --- a/Combination Sum - Leetcode 39/Combination Sum - Leetcode 39.py +++ b/Combination Sum - Leetcode 39/Combination Sum - Leetcode 39.py @@ -0,0 +1,24 @@ +class Solution: + def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: + res = [] + sol = [] + + def backtrack(i, cur_sum): + if cur_sum == target: + res.append(sol.copy()) + return + + if cur_sum > target or i == len(candidates): + return + + backtrack(i + 1, cur_sum) + + sol.append(candidates[i]) + backtrack(i, cur_sum + candidates[i]) + sol.pop() + + backtrack(0, 0) + return res + +# Time Complexity: O(2^target) +# Space Complexity: O(target) \ No newline at end of file