题解 | 加起来和为目标值的组合(二)
加起来和为目标值的组合(二)
https://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a?tpId=196&tqId=37076&rp=1&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3DPython%25E7%25AF%2587%26topicId%3D314&difficulty=undefined&judgeStatus=undefined&tags=&title=
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型一维数组
# @param target int整型
# @return int整型二维数组
#
class Solution:
def combinationSum2(self , num: List[int], target: int) -> List[List[int]]:
num.sort()
n = len(num)
res, path = [], []
vis = [False]*n
def dfs(x:int,c:int):
if c==0:
res.append(path.copy())
return
for y in range(x,n):
if not vis[y] and num[y]<=c:
if y>0 and num[y]==num[y-1] and not vis[y-1]:
continue
vis[y] = True
path.append(num[y])
dfs(y+1,c-num[y])
path.pop()
vis[y] = False
dfs(0,target)
return res
