38 leetcode - Combination Sum
2016-12-14 08:53
417 查看
leetcode - Combination Sum,可以重复使用一个元素
#!/usr/bin/python # -*- coding: utf-8 -*- ''' Combination Sum. Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. The same repeated number may be chosen from C unlimited number of times. Note: All numbers (including target) will be positive integers. The solution set must not contain duplicate combinations. For example, given candidate set [2, 3, 6, 7] and target 7, A solution set is: [ [7], [2, 2, 3] ] ''' class Solution(object): def combinationSum(self, candidates, target): """ :type candidates: List[int] :type target: int :rtype: List[List[int]] """ length = len(candidates) if length == 0: return [] candidates.sort() #先排序 ret = [] tmp = [] self.__combinationSum(candidates,0,length,0,target,ret,tmp,0) return ret def __combinationSum(self,candidates,start,length,sum,target,ret,tmp,tmp_cur): if sum == target: ret.append(tmp[:tmp_cur]) return if start == length: return for index,i in enumerate(candidates[start:]): if sum + i > target:#如果当前比target大,后面的肯定比target大,因为是有序的 break tmp.append(i) self.__combinationSum(candidates,index + start,length,sum + i,target,ret,tmp,tmp_cur + 1) tmp.pop() if __name__ == "__main__": s = Solution() print s.combinationSum([2, 3, 6, 7],7)
相关文章推荐
- 38_leetcode_Combination Sum
- LeetCode 38 Combination Sum
- [Leetcode 33] 38 Count and Say
- leetcode 38 Count and Say C++
- 从Leetcode的Combination Sum系列谈起回溯法
- Leetcode-39: Combination Sum
- [LeetCode] Combination Sum
- leetcode 39 Combination Sum
- leetcode 39 : Combination Sum
- LeetCode(39) Combination Sum
- [LeetCode] Combination Sum
- Leetcode学习(38)—— First Unique Character in a String
- LeetCode-38-Count and Say-E
- leetcode-38 count and say
- Combination Sum - Leetcode
- LeetCode 38 Count and Say(计数与报数)
- leetcode:Combination Sum
- Java [Leetcode 39]Combination Sum
- [Leetcode] Combination Sum
- [LeetCode] Combination Sum