給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的數字可以無限制重複被選取。
說明:所有數字(包括 target)都是正整數。
解集不能包含重複的組合。
示例:
輸入: candidates = [2,3,6,7], target = 7,回溯法:乙個解的各個部分是逐步生成的,當發現當前生成的某部分不滿足約束條件時,就放棄該步所做的工作,退到上一步進行新的嘗試,而不是放棄整個解重來。所求解集為:
[[7],
[2,2,3]
]
遞迴結構:
f(n)=f(n-1)+k
class
solution
:def
combinationsum
(self, candidates: list[
int]
, target:
int)
-> list[list[
int]]:
self.result_all =
candidates.sort(
) self.dsf(
0, candidates, target,
)return self.result_all
defdsf(self, start, candidates, target, result):if
sum(result)
== target::]
)return
for i in
range
(start,
len(candidates)):
ifsum
(result)
+ candidates[i]
> target:
break
) self.dsf(i, candidates, target, result)
result.pop(
)return
LeetCode筆記 39組合總和
題目 給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例...
LeetCode 39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...
leetcode39 組合總和
參考 class solution if next num.size target num next 0 邊界條件 return 對於每個元素,有兩種處理方式,選當前元素或者不選當前元素 psol.push back num next 選當前元素 search num,next,psol,targe...