給定乙個無重複元素的陣列 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...