leetcode216. Combination Sum III

来源:互联网 发布:java excel 跨行 编辑:程序博客网 时间:2024/06/11 09:11

题目描述(难度):

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


Tags: Array,Backtracking
Similar Problems: (M) Combination Sum

分析:只有数字1--9可以使用,每个组合里每个数字都只能出现1次

代码实现:

class Solution(object):    def combinationSum3(self, k, n):        """        :type k: int        :type n: int        :rtype: List[List[int]]        """        candidates = [i for i in range(1, 10)]        result = []                def dfs(start, tmpRes, n, k):            if n==0 and k==0:                result.append(tmpRes[:])                return                        for i in range(start, len(candidates)):                #选择起点                if n-candidates[i]<0 or k==0:#剪枝                    break                tmpRes.append(candidates[i])                dfs(i+1, tmpRes, n-candidates[i], k-1)                tmpRes.pop()#还原递归现场                        dfs(0, [], n, k)        return result


0 0
原创粉丝点击