Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bb7707a

Browse files
committed
Merge branch 'main' of https://github.com/tomijaga/neetcode
merge
2 parents 82c99b7 + d251f87 commit bb7707a

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

javascript/994-Rotting-Oranges.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number}
4+
*/
5+
var orangesRotting = function(grid) {
6+
let [ROWS, COLS, time, fresh, q] = [grid.length, grid[0].length, 0, 0, []];
7+
let dirs = [[0,1],[0,-1],[1,0],[-1,0]];
8+
9+
// count fresh oranges and add rotten oranges to queue
10+
for (let i=0; i < ROWS; i++){
11+
for ( let j=0; j < COLS; j++){
12+
if (grid[i][j] === 1 ) fresh++;
13+
if (grid[i][j] === 2) q.push([i,j])
14+
}
15+
}
16+
17+
18+
while ( q.length > 0 && fresh > 0){
19+
let qLen = q.length;
20+
21+
for (let rot=0; rot < qLen; rot++){
22+
let [row,col] = q.shift();
23+
24+
for (let dir of dirs) {
25+
let [r,c] = [row + dir[0], col + dir[1]];
26+
27+
if (r < 0 || r >= ROWS || c < 0 || c >= COLS || grid[r][c] !== 1) continue;
28+
29+
grid[r][c] = 2;
30+
fresh--;
31+
q.push([r,c]);
32+
33+
}
34+
}
35+
36+
time++;
37+
}
38+
39+
return fresh > 0 ? -1 : time;
40+
};

0 commit comments

Comments
 (0)