有重复数组,求和为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


京公网安备 11010502036488号