leetcode.array--39. Combination Sum

来源:互联网 发布:东方财富dk指标源码 编辑:程序博客网 时间:2024/05/01 12:37

题目:39. Combination Sum

问题描述:https://leetcode.com/problems/combination-sum/description/

大致意思是说,从给定的数组中找到相加等于target的组合,其中数组中的每个数字可以使用多次。例如给定数组[2,3,6,7],返回[[2,2,3],[7]]。

乍一看想写DP但又写不出来,于是写了递归。递归也好久没写过了,上次写搜索代码应该还是在考研复试阶段。

Python:

class Solution(object):    def combinationSum(self, candidates, target):        """        :type candidates: List[int]        :type target: int        :rtype: List[List[int]]        """        def dfs(nums,target,startpos,path,res):            if target<0:                return            if target==0:                return res.append(path)            for i in range(startpos,len(nums)):                if target-nums[i]<0:                    return                dfs(nums,target-nums[i],i,path+[nums[i]],res)        res=[]        dfs(sorted(candidates),target,0,[],res)        return res


原创粉丝点击