給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。
示例:
nums = [1, 2, 3]
target = 4
所有可能的組合為:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
請注意,順序不同的序列被視作不同的組合。
因此輸出為 7。
不像組合總和、組合總和 ii、組合總和 iii是回溯的題目了,用回溯發現回超時,看標籤想到了dp
用dp[i]
來表示總和為i
的組合數,則轉移方程:
d p[
i]=∑
k∈nu
msdp
[i−k
],i−
k>
0dp[i] = \sum_dp[i - k], \;\;i - k > 0
dp[i]=
k∈nu
ms∑
dp[i
−k],
i−k>
0初始化dp[0] = 1
時間複雜度是o(m
n)
o(mn)
o(mn
),其中n
是target
,m
是nums
的長度
class
solution
:def
combinationsum4
(self, nums: list[
int]
, target:
int)
->
int:
dp =[1
]+[0
]* target
for i in
range(1
, target +1)
:for each_num in nums:
if i - each_num >=0:
dp[i]
+= dp[i - each_num]
return dp[-1
]
LeetCode 377 組合總和
這道題目是在陣列中找到和為給定目標正整數的組合的個數,題目如下所示 這道題目就難在不限陣列中元素使用的個數,我們如果用窮舉的方法很難得到正確的答案。於是我們可以想到用動態規劃的思想來解決這個問題。首先我們求的是和,我們就可以把和進行拆分,如題目中的例子為例,num s 1 2,3 nums 1,2,...
LeetCode 377 組合總和
給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。nums 1,2,3 target 4 所有可能的組合為 1,1,1,1 1,1,2 1,2,1 1,3 2,1,1 2,2 3,1 請注意,順序不同的序列被視作不同的組合。因此輸出為 7。class solution ...
leetcode377 組合總和4
給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。示例 nums 1 2,3 target 4所有可能的組合為 1 1,1 1 1,1,2 1 2,1 1,3 2 1,1 2,2 3 1 請注意,順序不同的序列被視作不同的組合。因此輸出為 7。方法一 遞迴 超時 cla...