39 組合總和

2021-10-09 07:55:24 字數 1495 閱讀 1177

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

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

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

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

class

solution

:def

combinationsum

(self, candidates: list[

int]

, target:

int)

-> list[list[

int]]:

res =

defbacktrace

(now,

sum):if

sum== target:

tmp = now[:]

tmp =

sorted

(tmp)

return

for i in candidates:

ifsum

+ i <= target:

backtrace(now,

sum+ i)

now.pop(

)else

:continue

backtrace(

,0)#print(res)

ans =

set(

)for i in res:

s =''for j in i:

s +=

str(j)

ans.add(s)

ans =

list

(ans)

#print(ans)

tmp =

i, j =0,

0while

(i !=

len(ans)):

j =0 now_str = ans[i]

i +=

1 now_list =

now_int =

''while

(j !=

len(now_str)):

now_int += now_str[j]

ifint

(now_int)

notin candidates:

j +=

1else

:int

(now_int)

) now_int =

'' j +=

1return

(tmp)

執行用時:280 ms, 在所有 python3 提交中擊敗了6.50%的使用者

記憶體消耗:17.9 mb, 在所有 python3 提交中擊敗了5.07%的使用者

如果樣例出現candidates = [13,12,1,3,10], target = 13,此題將報錯,偷了機取了個巧。

39 組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2...

39 組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...

39 組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candida...