力扣日記 040 組合總和II 回溯演算法

2021-10-02 08:37:10 字數 767 閱讀 5246

給定乙個陣列 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...