Leetcode 39 組合總和

2021-10-10 14:14:18 字數 1215 閱讀 1779

給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的數字可以無限制重複被選取。

說明:所有數字(包括 target)都是正整數。

解集不能包含重複的組合。

示例 1:

輸入:candidates = [2,3,6,7], target = 7,

所求解集為:

[[7],

[2,2,3]

]示例 2:

輸入:candidates = [2,3,5], target = 8,

所求解集為:

[[2,2,2,2],

[2,3,3],

[3,5]

]回溯 + 剪枝

建立 caculate 函式,傳參為( 已加入元素列表,剩餘總和,還剩元素列表 )。

為了防止返回列表重複,傳參需要傳入還剩元素列表。

時間複雜度 o(n log n ) ,空間複雜度 o( n )

class

solution

:def

combinationsum

(self, candidates: list[

int]

, target:

int)

-> list[list[

int]]:

result =

candidates =

sorted

(candidates)

defcaculate

(l,sum

, remain_l)

:for i in

range

(len

(remain_l)):

ifsum

- remain_l[i]

<0:

return

elif

sum- remain_l[i]==0

:[remain_l[i]])

else

: caculate(l +

[remain_l[i]],

sum- remain_l[i]

, remain_l[i:])

caculate(

, target, candidates)

return result

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...

LeetCode39組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...