leetcode-40-组合总和②

题目描述:

leetcode-40-组合总和②

leetcode-40-组合总和②

 

 

方法一:回溯

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        candidates.sort()
        res = []
        def backtrack(i,tmp_sum,tmp_list):
            # if tmp_sum > target or i==len(candidates):
            #     return
            if tmp_sum == target:
                res.append(tmp_list)
                return
            for j in range(i,len(candidates)):
                if tmp_sum + candidates[j] > target:
                    break
                if j>i and candidates[j] == candidates[j-1]:continue
                backtrack(j+1,tmp_sum+candidates[j],tmp_list+[candidates[j]])
        backtrack(0,0,[])
        return res