Skip to content

Commit 9e864fd

Browse files
committed
feat: add solutions to lc problem: No.0377
No.0377.Combination Sum IV
1 parent 72aa82a commit 9e864fd

File tree

5 files changed

+69
-2
lines changed

5 files changed

+69
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
- [分割等和子集](/solution/0400-0499/0416.Partition%20Equal%20Subset%20Sum/README.md) - 0-1 背包问题
8282
- [最后一块石头的重量 II](/solution/1000-1099/1049.Last%20Stone%20Weight%20II/README.md) - 0-1 背包问题
8383
- [零钱兑换](/solution/0300-0399/0322.Coin%20Change/README.md) - 完全背包问题
84+
- [组合总和 Ⅳ](/solution/0300-0399/0377.Combination%20Sum%20IV/README.md) - 完全背包问题
8485
<!-- 背包问题、状态机模型、状压DP、区间DP、树形DP、数位DP 待补充 -->
8586

8687
### 4. 高级数据结构

README_EN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ Complete solutions to [LeetCode](https://leetcode.com/problemset/all/), [LCOF](h
7777
- [Target Sum](/solution/0400-0499/0494.Target%20Sum/README_EN.md) - 0-1 Knapsack problem
7878
- [Partition Equal Subset Sum](/solution/0400-0499/0416.Partition%20Equal%20Subset%20Sum/README_EN.md) - 0-1 Knapsack problem
7979
- [Last Stone Weight II](/solution/1000-1099/1049.Last%20Stone%20Weight%20II/README_EN.md) - 0-1 Knapsack problem
80-
- [Coin Change](/solution/0300-0399/0322.Coin%20Change/README_EN.md) -Unbounded Knapsack problem
80+
- [Coin Change](/solution/0300-0399/0322.Coin%20Change/README_EN.md) - Unbounded Knapsack problem
81+
- [Combination Sum IV](/solution/0300-0399/0377.Combination%20Sum%20IV/README_EN.md) - Unbounded Knapsack problem
8182

8283
### 4. Advanced Data Structures
8384

solution/0300-0399/0377.Combination Sum IV/README.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@
5555

5656
<!-- 这里可写通用的实现逻辑 -->
5757

58-
简单动态规划,`dp[i]` 表示总和为 `i` 的元素组合的个数。
58+
**方法一:动态规划**
59+
60+
类似完全背包问题,每个整数可以选择多次。但这里需要考虑整数的顺序,只要出现顺序不同,就视为一种方案。因此可以将 nums 放在内层循环中。
61+
62+
`dp[i]` 表示总和为 `i` 的元素组合的个数。
5963

6064
<!-- tabs:start -->
6165

@@ -133,6 +137,28 @@ func combinationSum4(nums []int, target int) int {
133137
}
134138
```
135139

140+
### **JavaScript**
141+
142+
```js
143+
/**
144+
* @param {number[]} nums
145+
* @param {number} target
146+
* @return {number}
147+
*/
148+
var combinationSum4 = function (nums, target) {
149+
const dp = new Array(target + 1).fill(0);
150+
dp[0] = 1;
151+
for (let i = 1; i <= target; ++i) {
152+
for (let v of nums) {
153+
if (i >= v) {
154+
dp[i] += dp[i - v];
155+
}
156+
}
157+
}
158+
return dp[target];
159+
};
160+
```
161+
136162
### **...**
137163

138164
```

solution/0300-0399/0377.Combination Sum IV/README_EN.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,28 @@ func combinationSum4(nums []int, target int) int {
124124
}
125125
```
126126

127+
### **JavaScript**
128+
129+
```js
130+
/**
131+
* @param {number[]} nums
132+
* @param {number} target
133+
* @return {number}
134+
*/
135+
var combinationSum4 = function (nums, target) {
136+
const dp = new Array(target + 1).fill(0);
137+
dp[0] = 1;
138+
for (let i = 1; i <= target; ++i) {
139+
for (let v of nums) {
140+
if (i >= v) {
141+
dp[i] += dp[i - v];
142+
}
143+
}
144+
}
145+
return dp[target];
146+
};
147+
```
148+
127149
### **...**
128150

129151
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number}
5+
*/
6+
var combinationSum4 = function (nums, target) {
7+
const dp = new Array(target + 1).fill(0);
8+
dp[0] = 1;
9+
for (let i = 1; i <= target; ++i) {
10+
for (let v of nums) {
11+
if (i >= v) {
12+
dp[i] += dp[i - v];
13+
}
14+
}
15+
}
16+
return dp[target];
17+
};

0 commit comments

Comments
 (0)