39 leetcode - Combination Sum II
来源:互联网 发布:php转java难吗 编辑:程序博客网 时间:2024/06/12 22:27
#!/usr/bin/python# -*- coding: utf-8 -*-'''Combination Sum IIGiven a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.Each number in C may only be used once in the combination.Note:All numbers (including target) will be positive integers.The solution set must not contain duplicate combinations.For example, given candidate set [10, 1, 2, 7, 6, 1, 5] and target 8, A solution set is: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]不能重复使用一个元素,结果不能重复'''class Solution(object): def combinationSum2(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 = range(length)#因为元素不能重复使用,最长为candidates的长度 self.__combinationSum2(candidates,0,length,0,target,ret,tmp,0) return ret def __combinationSum2(self,candidates,start,length,sum,target,ret,tmp,tmp_cur): if sum == target: ret.append(tmp[:tmp_cur]) return if start == length: return while start < length: if sum + candidates[start] > target: break tmp[tmp_cur] = candidates[start] self.__combinationSum2(candidates,start + 1,length,sum + candidates[start],target,ret,tmp,tmp_cur + 1) while start + 1 < length and candidates[start + 1] == candidates[start]:#结果去重,因为前面已经将重复的元素都组合过了,再组合只会导致重复结果,所以重复的元素不再组合 start += 1 start += 1if __name__ == "__main__": s = Solution() print s.combinationSum2([10,1,2,7,6,1,5],8) print s.combinationSum2([1],1)
0 0
- Leetcode【39】:Combination Sum II
- LeetCode 39 Combination Sum II
- 39 leetcode - Combination Sum II
- LeetCode: Combination Sum II
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- [LeetCode] Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- LeetCode: Combination Sum II
- leetcode Combination Sum II
- [LeetCode]Combination Sum II
- [leetcode] Combination Sum II
- LeetCode-Combination Sum II
- LeetCode - Combination Sum II
- LeetCode:Combination Sum II
- jquery colspan rowspan
- LINUX C中如何定义可变参数的宏
- JAVA中CLASS.FORNAME的含义
- 利用CSS的transform旋转制作折扇效果
- 不同窗口自动设置输入法
- 39 leetcode - Combination Sum II
- android-判断当前Fragment是否可见(Visible)
- 高速公路ETC卡签之我见3-卡片圈存
- jQuery基础---过滤器
- 感受
- java中遍历实体类属性和类型,属性值
- Android开发图片水平旋转180度
- CocosPod 安装 最详细
- 【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)