天天看點

Leetcode_Combination Sum III

Tag

Array\Backtracking

Difficulty

Medium

Description

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]]

Code

class Solution(object):
    def DFS(self,tmp,sum,count,level):
        if sum== and count==:
            return Solution.ret.append(tmp[:])
        elif sum< or count<:
            return
        for i in range(level,):
            tmp.append(i)
            self.DFS(tmp,sum-i,count-,i+)
            tmp.remove(tmp[-])
    def combinationSum3(self, k, n):
        """
        :type k: int
        :type n: int
        :rtype: List[List[int]]
        """
        Solution.ret=[]
        tmp=[]
        if k< or n< or k>n:
            return Solution.ret
        self.DFS(tmp,n,k,)
        return Solution.ret