給定乙個陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的每個數字在每個組合中只能使用一次。
說明:所有數字(包括目標數)都是正整數。
解集不能包含重複的組合。
回溯演算法,主體類似組合總和 i
class
solution
:def
combinationsum2
(self, c, t:
int)
: c.sort(
) n =
len(c)
rec =
defsum
(index,
sum=
0, l=
):ifsum
> t:
return
ifsum
== t:
#去重if l not
in rec:
return
for i in
range
(index, n):if
sum+ c[i]
> t:
break
#這裡是注意點,i+1,這是實現每個數字只使用一次的關鍵
sum(i +1,
sum+ c[i]
, l +
[c[i]])
sum(0)
return rec
力扣日記 039 組合總和 回溯演算法
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。解集不能包含重複的組合。第一次做回溯演算法,磨磨唧唧乙個多小時總歸做出來了。class soluti...
LeetCode040 組合總和 II
給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...
力扣 題目40 組合總和 II
在力扣 題目39 組合總和中我們做過類似的題 而40題多加了條件 即 有重複數字而且每個數只能選一次 其實我們可以從39題條件轉換一下,即無限制重複被選取 有限制重複被選取 例如 candidates 2,5,2,1,2 就是 1可以取1次 2可以取3次 5可以取1次 這樣的話就簡單了 我們只要在3...