class Solution(object):
def combinationSum2(self, candidates, target):
"""
:type candidates: List[int]
:type target: int
:rtype: List[List[int]]
"""
self.res = []
self.old = None
candidates = sorted(candidates)
self.generateCombinatio(candidates,target,0,[])
print self.res
return self.res
def generateCombinatio(self,candidates,target,start ,ans):
if sum(ans) == target:
self.res.append(ans[0:])
return
if sum(ans) > target:
return
if self.old == None:
for i in range(start,len(candidates)):
if candidates[i] != self.old:
ans.append(candidates[i])
self.generateCombinatio(candidates,target,i+1,ans)
self.old = ans.pop()
else:
continue
else:
for i in range(start, len(candidates)):
if candidates[i] != self.old:
ans.append(candidates[i])
self.generateCombinatio(candidates, target, i + 1, ans)
self.old = ans.pop()
else:
continue
s = Solution()
can = [10,1,2,7,6,1,5]
tar = 8
s.combinationSum2(can,tar)
递归和回溯_leetcode40-经典的组合去重问题
猜你喜欢
转载自www.cnblogs.com/lux-ace/p/10556936.html
今日推荐
周排行