Skip to content

Commit fdc3aa6

Browse files
committed
Create 994.腐烂的橘子.js
1 parent b01cf2b commit fdc3aa6

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

994.腐烂的橘子.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number}
4+
*/
5+
var orangesRotting = function(grid) {
6+
let good = 0;
7+
let bad = [];
8+
let count = 0;
9+
const direction = [[1, 0], [-1, 0], [0, 1], [0, -1]];
10+
11+
for (let i = 0; i < grid.length; i++) {
12+
for (let j = 0; j < grid[i].length; j++) {
13+
if (grid[i][j] === 1) {
14+
good++;
15+
} else if (grid[i][j] === 2) {
16+
bad.push({i, j});
17+
}
18+
}
19+
}
20+
21+
if (good === 0) {
22+
return 0;
23+
}
24+
25+
while (bad.length) {
26+
count++;
27+
const queue = bad;
28+
bad = [];
29+
30+
while (queue.length) {
31+
const {i, j} = queue.pop();
32+
for (const [di, dj] of direction) {
33+
const nexti = i + di;
34+
const nextj = j + dj;
35+
if (grid[nexti] && grid[nexti][nextj] === 1) {
36+
good--;
37+
grid[nexti][nextj] = 2;
38+
bad.push({i: nexti, j: nextj});
39+
}
40+
}
41+
}
42+
}
43+
44+
return good === 0 ? count - 1 : -1;
45+
};
46+
47+
console.log(orangesRotting([[2,1,1],[1,1,0],[0,1,1]]));

0 commit comments

Comments
 (0)