和上一个题很像,但是每个数字只能使用一次。
class Solution(object):
def combinationSum2(self, candidates, target):
self.result=[]
candidates.sort()
start=0
val=[]
self.backdate(candidates, target, start,val)
return self.result
def backdate(self,candidates,target,start,val):
for i in range(start,len(candidates)):
if target<0:
break
else:
val.append(candidates[i])
if target - candidates[i]==0:
if val not in self.result:
self.result.append(val[:])
self.backdate(candidates, target-candidates[i],i+1, val)
val.pop()
if(i < len(candidates)-1 & candidates[i]==candidates[i+1]):
break