题解 | #加起来和为目标值的组合(二)#

加起来和为目标值的组合(二)

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

全部评论

相关推荐

04-18 00:32
已编辑
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务