mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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之前为0,u之后(含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>
|
||||||
|
Reference in New Issue
Block a user