Merge branch 'youngyangyang04:master' into master

This commit is contained in:
Mrxulovemingming
2022-05-21 20:22:11 +08:00
committed by GitHub
4 changed files with 115 additions and 13 deletions

View File

@ -218,18 +218,26 @@ class Solution:
```Go ```Go
func jump(nums []int) int { func jump(nums []int) int {
dp := make([]int, len(nums)) dp := make([]int, len(nums))
dp[0]=0 dp[0] = 0//初始第一格跳跃数一定为0
for i := 1; i < len(nums); i++ { for i := 1; i < len(nums); i++ {
dp[i] = i dp[i] = i
for j := 0; j < i; j++ { for j := 0; j < i; j++ {
if nums[j]+j>i{ if nums[j] + j >= i {//nums[j]为起点,j为往右跳的覆盖范围,这行表示从j能跳到i
dp[i]=min(dp[j]+1,dp[i]) dp[i] = min(dp[j] + 1, dp[i])//更新最小能到i的跳跃次数
} }
} }
} }
return dp[len(nums)-1] return dp[len(nums)-1]
} }
func min(a, b int) int {
if a < b {
return a
} else {
return b
}
}
``` ```
### Javascript ### Javascript

View File

@ -227,7 +227,33 @@ const numTrees =(n) => {
}; };
``` ```
C: TypeScript
```typescript
function numTrees(n: number): number {
/**
dp[i]: i个节点对应的种树
dp[0]: -1; 无意义;
dp[1]: 1;
...
dp[i]: 2 * dp[i - 1] +
(dp[1] * dp[i - 2] + dp[2] * dp[i - 3] + ... + dp[i - 2] * dp[1]); 从1加到i-2
*/
const dp: number[] = [];
dp[0] = -1; // 表示无意义
dp[1] = 1;
for (let i = 2; i <= n; i++) {
dp[i] = 2 * dp[i - 1];
for (let j = 1, end = i - 1; j < end; j++) {
dp[i] += dp[j] * dp[end - j];
}
}
return dp[n];
};
```
### C
```c ```c
//开辟dp数组 //开辟dp数组
int *initDP(int n) { int *initDP(int n) {

View File

@ -274,7 +274,33 @@ var integerBreak = function(n) {
}; };
``` ```
C: ### TypeScript
```typescript
function integerBreak(n: number): number {
/**
dp[i]: i对应的最大乘积
dp[2]: 1;
...
dp[i]: max(
1 * dp[i - 1], 1 * (i - 1),
2 * dp[i - 2], 2 * (i - 2),
..., (i - 2) * dp[2], (i - 2) * 2
);
*/
const dp: number[] = new Array(n + 1).fill(0);
dp[2] = 1;
for (let i = 3; i <= n; i++) {
for (let j = 1; j <= i - 2; j++) {
dp[i] = Math.max(dp[i], j * dp[i - j], j * (i - j));
}
}
return dp[n];
};
```
### C
```c ```c
//初始化DP数组 //初始化DP数组
int *initDP(int num) { int *initDP(int num) {

View File

@ -432,5 +432,47 @@ function test () {
test(); test();
``` ```
### TypeScript
```typescript
function testWeightBagProblem(
weight: number[],
value: number[],
size: number
): number {
/**
* dp[i][j]: 前i个物品背包容量为j能获得的最大价值
* dp[0][*]: u=weight[0],u之前为0u之后含u为value[0]
* dp[*][0]: 0
* ...
* dp[i][j]: max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i]);
*/
const goodsNum: number = weight.length;
const dp: number[][] = new Array(goodsNum)
.fill(0)
.map((_) => new Array(size + 1).fill(0));
for (let i = weight[0]; i <= size; i++) {
dp[0][i] = value[0];
}
for (let i = 1; i < goodsNum; i++) {
for (let j = 1; j <= size; j++) {
if (j < weight[i]) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
}
}
}
return dp[goodsNum - 1][size];
}
// test
const weight = [1, 3, 4];
const value = [15, 20, 30];
const size = 4;
console.log(testWeightBagProblem(weight, value, size));
```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>