有重复数组,求和为target的combinations,先排序再去重

#
# 
# @param num int整型一维数组 
# @param target int整型 
# @return int整型二维数组
#
class Solution:
    def combinationSum2(self , num , target ):
        # write code here
        def backtrack(num, target, curr, idx):
            curr_value = sum([num[i] for i in curr])
            if curr_value == target:
                self.res.append([num[i] for i in curr])
                return
            elif curr_value > target:
                return
            else:
                for i in range(idx, len(num)):
                    if i >= 1 and num[i] == num[i-1] and i-1 not in curr:
                        continue
                    curr.append(i)
                    backtrack(num, target, curr, i+1)
                    curr.pop()
        num.sort()
        self.res = []
        backtrack(num, target, [], 0)
        return self.res