Skip to content

Commit ff49a5c

Browse files
committed
update: --
1 parent 731f06e commit ff49a5c

12 files changed

+270
-1
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star (此仓库每天都会准时更新)- vx联系: xiaoda0423
1717

18-
## ✔ 阶段二十一(475
18+
## ✔ 阶段二十一(480
1919

2020
<details open>
2121
<summary>展开查看</summary>
@@ -25,6 +25,11 @@
2525
- 473.[377. 组合总和 Ⅳ](./阶段二十一/组合总和.js)
2626
- 474.[312. 戳气球](./阶段二十一/戳气球.js)
2727
- 475.[322. 零钱兑换](./阶段二十一/零钱兑换.js)
28+
- 476.[64. 最小路径和](./阶段二十一/最小路径和.js)
29+
- 477.[1343. 大小为 K 且平均值大于等于阈值的子数组数目](./阶段二十一/1343.js)
30+
- 478.[Promise术语](./阶段二十一/Promise术语.js)
31+
- 479.[Promise承诺状态](./阶段二十一/Promise承诺状态.js)
32+
- 480.[Promisethen](./阶段二十一/Promisethen.js)
2833

2934
</details>
3035

code/1343.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* @lc app=leetcode.cn id=1343 lang=javascript
3+
*
4+
* [1343] Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* @param {number[]} arr
10+
* @param {number} k
11+
* @param {number} threshold
12+
* @return {number}
13+
arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
14+
i j
15+
0 j(2) i=k-j-1
16+
3, 4...
17+
k-i-1 i(2)
18+
*/
19+
var numOfSubarrays = function(arr, k, threshold) {
20+
let sum = 0;
21+
const len = arr.length;
22+
let count = 0;
23+
for (let i = 0; i < len; i++) {
24+
sum += arr[i];
25+
if (i >= k) {
26+
sum -= arr[i - k];
27+
}
28+
if (i >= k - 1 && sum / k >= threshold) {
29+
count++;
30+
}
31+
}
32+
return count;
33+
};
34+
// @lc code=end
35+
// @lc code=end

code/最小路径和.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number}
4+
* dp[i][j] = minSum?
5+
* dp[i][j] = Math.min(dp[i-1][j] + grid[i][j], dp[i][j-1] + grid[i][j])
6+
7+
Infinity Infinity Infinity
8+
Infinity[1, 4, 5]
9+
Infinity[2, 7, 6]
10+
Infinity[6, 8, 7]
11+
12+
*/
13+
var minPathSum = function(grid) {
14+
const row = grid.length;
15+
const col = grid[0].length;
16+
const dp = new Array(row).fill(0).map(_ => new Array(col).fill(0));
17+
dp[0][0] = grid[0][0];
18+
dp[-1] = new Array(col).fill(Infinity);
19+
for (let i = 0; i < row; i++) {
20+
dp[i][-1] = Infinity;
21+
}
22+
for (let i = 0; i < row; i++) {
23+
for (let j = 0; j < col; j++) {
24+
if (i === 0 && j === 0) continue;
25+
dp[i][j] = Math.min(dp[i - 1][j] + grid[i][j], dp[i][j - 1] + grid[i][j]);
26+
}
27+
}
28+
console.log(dp);
29+
return dp[row - 1][col - 1];
30+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* @lc app=leetcode.cn id=1343 lang=javascript
3+
*
4+
* [1343] Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* @param {number[]} arr
10+
* @param {number} k
11+
* @param {number} threshold
12+
* @return {number}
13+
arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
14+
i j
15+
0 j(2) i=k-j-1
16+
3, 4...
17+
k-i-1 i(2)
18+
*/
19+
var numOfSubarrays = function(arr, k, threshold) {
20+
let sum = 0;
21+
const len = arr.length;
22+
let count = 0;
23+
for (let i = 0; i < len; i++) {
24+
sum += arr[i];
25+
if (i >= k) {
26+
sum -= arr[i - k];
27+
}
28+
if (i >= k - 1 && sum / k >= threshold) {
29+
count++;
30+
}
31+
}
32+
return count;
33+
};
34+
// @lc code=end
35+
// @lc code=end

leetcode/312.burst-balloons.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* @lc app=leetcode.cn id=312 lang=javascript
3+
*
4+
* [312] Burst Balloons
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* @param {number[]} nums
10+
* @return {number}
11+
*/
12+
var maxCoins = function(nums) {
13+
14+
};
15+
// @lc code=end
16+

leetcode/64.minimum-path-sum.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* @lc app=leetcode.cn id=64 lang=javascript
3+
*
4+
* [64] Minimum Path Sum
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* @param {number[][]} grid
10+
* @return {number}
11+
*/
12+
var minPathSum = function(grid) {
13+
const row = grid.length;
14+
const col = grid[0].length;
15+
const dp = new Array(row).fill(0).map(_ => new Array(col).fill(0));
16+
dp[0][0] = grid[0][0];
17+
dp[-1] = new Array(col).fill(Infinity);
18+
for (let i = 0; i < row; i++) {
19+
dp[i][-1] = Infinity;
20+
}
21+
for (let i = 0; i < row; i++) {
22+
for (let j = 0; j < col; j++) {
23+
if (i === 0 && j === 0) continue;
24+
dp[i][j] = Math.min(dp[i - 1][j] + grid[i][j], dp[i][j - 1] + grid[i][j]);
25+
}
26+
}
27+
console.log(dp);
28+
return dp[row - 1][col - 1];
29+
};
30+
// @lc code=end

阶段二十一/1343.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
*
3+
* [1343] Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold
4+
*/
5+
6+
var numOfSubarrays = function(arr, k, threshold) {
7+
let sum = 0;
8+
const len = arr.length;
9+
let count = 0;
10+
for (let i = 0; i < len; i++) {
11+
sum += arr[i];
12+
if (i >= k) {
13+
sum -= arr[i - k];
14+
}
15+
if (i >= k - 1 && sum / k >= threshold) {
16+
count++;
17+
}
18+
}
19+
return count;
20+
};

阶段二十一/Promise.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
3+
一个健全的、 可互操作的 JavaScript 承诺的开放标准—— 由实现者, 为实现者。
4+
5+
Promise代表异步操作的最终结果。 与 Promise 交互的主要方式是通过它的then方法, 该方法注册回调以接收 Promise 的最终值或无法实现 Promise 的原因。
6+
7+
该规范详细说明了该then方法的行为, 提供了一个可互操作的基础, 所有符合 Promises / A + 的 Promise 实现都可以依赖该基础来提供。 因此, 规范应该被认为是非常稳定的。 尽管 Promises / A + 组织可能偶尔会修改此规范, 并通过较小的向后兼容更改来解决新发现的极端情况, 但只有在仔细考虑、 讨论和测试之后, 我们才会集成大型或向后不兼容的更改。
8+
9+
10+
11+
*/

阶段二十一/Promisethen.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
3+
承诺必须提供一种then方法来访问其当前或最终的价值或原因。
4+
5+
Promise 的then方法接受两个参数:
6+
7+
promise.then(onFulfilled, onRejected)
8+
9+
onFulfilled和都是onRejected可选参数:
10+
如果onFulfilled不是函数,则必须忽略它。
11+
如果onRejected不是函数,则必须忽略它。
12+
13+
如果onFulfilled是一个函数:
14+
它必须在promise完成后调用,并以promise' 值作为它的第一个参数。
15+
在完成之前不能调用它promise。
16+
不能多次调用它。
17+
18+
如果onRejected是一个函数,
19+
它必须在promise被拒绝后被调用,并以promise' 的理由作为它的第一个参数。
20+
promise在被拒绝之前不能调用它。
21+
不能多次调用它。
22+
23+
24+
onFulfilled并且onRejected必须作为函数调用(即没有this值)
25+
26+
then可以在同一个 Promise 上多次调用。
27+
如果/何时promise满足,所有相应onFulfilled的回调必须按照它们对then.
28+
如果/何时promise被拒绝,所有相应onRejected的回调必须按照它们对then.
29+
30+
31+
promise2 = promise1.then(onFulfilled, onRejected);
32+
33+
34+
如果其中一个onFulfilled或onRejected返回一个值x,则运行 Promise Resolution Procedure [[Resolve]](promise2, x)。
35+
如果其中一个onFulfilled或onRejected抛出异常e,则promise2必须以拒绝e为理由。
36+
如果onFulfilled不是一个函数并且promise1被满足,则promise2必须以与 相同的值来满足promise1。
37+
如果onRejected不是函数并且promise1被拒绝,则promise2必须以与 相同的原因被拒绝promise1。
38+
39+
40+
*/
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
3+
4+
Promise 必须处于以下三种状态之一:待处理、已完成或已拒绝。
5+
6+
待处理时,承诺:
7+
可以转换到已完成或已拒绝状态。
8+
9+
实现时,承诺:
10+
不得过渡到任何其他状态。
11+
必须有一个不能改变的值。
12+
13+
当被拒绝时,一个承诺:
14+
不得过渡到任何其他状态。
15+
必须有一个理由,这个理由不能改变。
16+
17+
在这里,“不得改变”是指不变的身份(即===),但并不意味着深度不变。
18+
19+
20+
*/

阶段二十一/Promise术语.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
3+
“promise”是具有then行为符合本规范的方法的对象或函数。
4+
“thenable”是定义then方法的对象或函数。
5+
“value”是任何合法的 JavaScript 值(包括undefined,thenable 或 promise)。
6+
“异常”是使用throw语句抛出的值。
7+
“reason” 是一个值,表示一个承诺被拒绝的原因。
8+
9+
*/

阶段二十一/最小路径和.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
var minPathSum = function(grid) {
2+
const row = grid.length;
3+
const col = grid[0].length;
4+
const dp = new Array(row).fill(0).map(_ => new Array(col).fill(0));
5+
dp[0][0] = grid[0][0];
6+
dp[-1] = new Array(col).fill(Infinity);
7+
for (let i = 0; i < row; i++) {
8+
dp[i][-1] = Infinity;
9+
}
10+
for (let i = 0; i < row; i++) {
11+
for (let j = 0; j < col; j++) {
12+
if (i === 0 && j === 0) continue;
13+
dp[i][j] = Math.min(dp[i - 1][j] + grid[i][j], dp[i][j - 1] + grid[i][j]);
14+
}
15+
}
16+
console.log(dp);
17+
return dp[row - 1][col - 1];
18+
};

0 commit comments

Comments
 (0)