题解 | #加起来和为目标值的组合(二)#
加起来和为目标值的组合(二)
https://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param num int整型一维数组 # @param target int整型 # @return int整型二维数组 # class Solution: def combinationSum2(self , num: List[int], target: int) -> List[List[int]]: # write code here path = [] num.sort() def backtrack(res, combination, start): #注意res小于0的情况放到最前面,这种情况的概率远大于res等于0的情况 #不得不服,等于0放前面真的会超时 if res < 0: return elif res == 0: path.append(combination.copy()) #这里没写return,但其实有无没啥关系 else: for i in range(start, len(num)): #去重 if i > start and num[i] == num[i-1]: continue combination.append(num[i]) backtrack(res - num[i], combination, i + 1) combination.pop() backtrack(target, [], 0) return path