Skip to content

Commit 6ed7168

Browse files
committed
✨ dynamic problem
1 parent 806e470 commit 6ed7168

File tree

7 files changed

+124
-0
lines changed

7 files changed

+124
-0
lines changed

CATEGORY.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,15 @@ https://labuladong.gitbook.io/algo/di-ling-zhang-bi-du-xi-lie/gitbook
6060
https://github.com/garciparedes
6161

6262
https://garciparedes.me/#headers
63+
64+
- 动态规划
65+
66+
- [ ] 5
67+
- [x] 53
68+
- [x] 62
69+
- [x] 64
70+
- [x] 70
71+
- [ ] 91
72+
- [x] 120
73+
- [ ] 121
74+
- [ ] 152

src/120-triangle/20210602.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number[][]} triangle
3+
* @return {number}
4+
*/
5+
var minimumTotal = function (triangle) {
6+
const dp = Array(triangle.length);
7+
8+
for (let i = 0; i < triangle.length; i++) {
9+
dp[i] = [];
10+
for (let j = 0; j < i + 1; j++) {
11+
if (i === 0) {
12+
dp[i][j] = Number(triangle[i][j]);
13+
continue;
14+
}
15+
if (j === 0) {
16+
dp[i][j] = ~~dp[i - 1][j] + Number(triangle[i][j]);
17+
continue;
18+
}
19+
if (j === i) {
20+
dp[i][j] = ~~dp[i - 1][j - 1] + Number(triangle[i][j]);
21+
continue;
22+
}
23+
dp[i][j] =
24+
Math.min(~~dp[i - 1][j - 1], ~~dp[i - 1][j]) + Number(triangle[i][j]);
25+
}
26+
}
27+
28+
return Math.min(...dp[triangle.length - 1]);
29+
};
30+
31+
minimumTotal([[2], [3, 4], [6, 5, 7], [4, 1, 8, 3]]);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Time Complexity O(n) [Only a single pass is needed.]
2+
// Space Complexity O(1) [Only two variables are used.]
3+
4+
function maxProfit(prices) {
5+
let res = -Infinity;
6+
let buy = Infinity;
7+
8+
for (let i = 0; i < prices.length; i++) {
9+
res = Math.max(res, prices[i] - buy);
10+
buy = Math.min(buy, prices[i]);
11+
}
12+
13+
return Math.max(res, 0);
14+
}

src/53-maximum-subarray/20210602.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var maxSubArray = function (nums) {
6+
let max = -Infinity;
7+
let pre = 0;
8+
9+
for (let i = 0; i < nums.length; i++) {
10+
pre = Math.max(nums[i], pre + nums[i]);
11+
max = Math.max(max, pre);
12+
}
13+
14+
return max;
15+
};

src/62-unique-paths/20210602.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function uniquePaths(m, n) {
2+
let dp = Array(m).fill(Array(n).fill(1));
3+
4+
for (let i = 1; i < m; i++) {
5+
for (let j = 1; j < n; j++) {
6+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
7+
}
8+
}
9+
10+
return dp[m - 1][n - 1];
11+
}

src/64-minimum-path-sum/20210602.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
function minPathSum(grid) {
2+
const m = grid.length;
3+
const n = grid[0].length;
4+
const dp = Array(m).fill(Array(n));
5+
6+
for (let i = 0; i < m; i++) {
7+
for (let j = 0; j < n; j++) {
8+
if (i === 0) {
9+
dp[i][j] = ~~dp[i][j - 1] + grid[i][j];
10+
continue;
11+
}
12+
if (j === 0) {
13+
dp[i][j] = ~~dp[i - 1][j] + grid[i][j];
14+
continue;
15+
}
16+
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
17+
}
18+
}
19+
20+
return dp[m - 1][n - 1];
21+
}

src/70-climbing-stairs/20210602.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Approach: Fibonacci Number
2+
// Time Complexity O(N)
3+
// Space Complexity O(1)
4+
5+
// Approach: Fibonacci Number
6+
// Time Complexity O(N)
7+
// Space Complexity O(1)
8+
9+
function getClimbingWays(numOfStairs) {
10+
const dp = Array(numOfStairs).fill(0);
11+
for (let i = 0; i < numOfStairs; i++) {
12+
if (i < 2) {
13+
dp[i] = i + 1;
14+
continue;
15+
}
16+
dp[i] = dp[i - 1] + dp[i - 2];
17+
}
18+
19+
return dp[numOfStairs - 1];
20+
}

0 commit comments

Comments
 (0)