Problem Statement
(Source) Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
Solution
class Solution(object):
def bt(self, res, ass, k, n):
if len(ass) == k:
if n == 0:
res.append(ass)
else:
start = 0
if ass:
start = ass[-1]
for num in xrange(start + 1, 10):
if num > n:
break
ass2 = [x for x in ass]
ass2.append(num)
self.bt(res, ass2, k, n - num)
def combinationSum3(self, k, n):
"""
:type k: int
:type n: int
:rtype: List[List[int]]
"""
res = []
self.bt(res, [], k, n)
return res