377. Combination Sum IV - Medium
前往題目
想法
- 會不會是用
backtracking
?
思路
- 利用
array
當作cache
base case
是0
,因為只有一種組合是0
- 接著疊代
1~target
,逐步建立cache
- 每個循環裡面要再看一次所有的
nums
並相加,因為先前的加起來才是當前的組合總數
可以看這個discussion的解釋,非常清楚
Code
class Solution {
public int combinationSum4(int[] nums, int target) {
int[] dp = new int[target + 1];
// 1 way to form 0
dp[0] = 1;
// 1 ~ target
for (int i = 1; i <= target; ++i) {
// Add up previous combinations
for (int num : nums) {
if (i - num >= 0) {
dp[i] += dp[i - num];
}
}
}
return dp[target];
}
}
377. Combination Sum IV - Medium
https://f88083.github.io/2024/01/25/377-Combination-Sum-IV-Medium/