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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 空调外机空间小怎么办 离婚判决生效书丢了怎么办 法院判决离婚对方上诉怎么办 法院判决离婚上诉中级法院怎么办 刑诉中二审发现一审事实错误怎么办 法院判决过了执行期怎么办 刑事犯罪判决后法院未执行怎么办 法院起诉对方不签字怎么办 法院判离婚对方不要签字怎么办 老人不能到法院签字怎么办 法院判决书被告人没签字怎么办? 法院判决离婚一方不签字怎么办 法院判决离婚对方不签字怎么办 法院已判决被告没有钱怎么办 判决还款但是的确没有钱怎么办 强执执行没有钱怎么办 法院判了没钱还怎么办 判决后对方不给钱怎么办 欠钱判决后没钱怎么办 判决了还不给钱怎么办 驾驶证到期本人在监狱服刑怎么办 轻伤过了追诉期怎么办 判决生效书丢了怎么办 高层17楼水压低怎么办 高层六楼水压低怎么办 高层6楼水压低怎么办 高层5楼水压低怎么办 高层五楼水压小怎么办 高层四楼水压低怎么办 高层6楼水压不够怎么办 马桶水箱盖坏了怎么办 马桶水箱盖子坏了怎么办 绿萝的叶子黄了怎么办 绿萝叶子烂了怎么办 还款协议签订后一方反悔怎么办 签了协议想反悔怎么办 体温计打碎了水银找不到了怎么办 模拟城市5核电站爆炸怎么办 日本地铁票丢了怎么办 在日本地铁票丢了怎么办 首付交了没合同怎么办