From dd68fbb42e0a177bfe9de08207d690ad7b43ef90 Mon Sep 17 00:00:00 2001 From: mgobran Date: Sat, 16 Jul 2022 10:17:24 -0400 Subject: [PATCH 1/2] 994-Rotting-oranges JS solution --- javascript/994-Rotting-oranges.js | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 javascript/994-Rotting-oranges.js diff --git a/javascript/994-Rotting-oranges.js b/javascript/994-Rotting-oranges.js new file mode 100644 index 000000000..2a12e49ae --- /dev/null +++ b/javascript/994-Rotting-oranges.js @@ -0,0 +1,40 @@ +/** + * @param {number[][]} grid + * @return {number} + */ + var orangesRotting = function(grid) { + let [ROWS, COLS, time, fresh, q] = [grid.length, grid[0].length, 0, 0, []]; + let dirs = [[0,1],[0,-1],[1,0],[-1,0]]; + + // count fresh oranges and add rotten oranges to queue + for (let i=0; i < ROWS; i++){ + for ( let j=0; j < COLS; j++){ + if (grid[i][j] === 1 ) fresh++; + if (grid[i][j] === 2) q.push([i,j]) + } + } + + + while ( q.length > 0 && fresh > 0){ + let qLen = q.length; + + for (let rot=0; rot < qLen; rot++){ + let [row,col] = q.shift(); + + for (let dir of dirs) { + let [r,c] = [row + dir[0], col + dir[1]]; + + if (r < 0 || r >= ROWS || c < 0 || c >= COLS || grid[r][c] !== 1) continue; + + grid[r][c] = 2; + fresh--; + q.push([r,c]); + + } + } + + time++; + } + + return fresh > 0 ? -1 : time; +}; \ No newline at end of file From adf11de04d93b396f91db29a90319b809cd6ff0e Mon Sep 17 00:00:00 2001 From: aa0 <71089234+Ahmad-A0@users.noreply.github.com> Date: Sat, 16 Jul 2022 15:22:46 +0100 Subject: [PATCH 2/2] Rename 994-Rotting-oranges.js to 994-Rotting-Oranges.js --- javascript/{994-Rotting-oranges.js => 994-Rotting-Oranges.js} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename javascript/{994-Rotting-oranges.js => 994-Rotting-Oranges.js} (99%) diff --git a/javascript/994-Rotting-oranges.js b/javascript/994-Rotting-Oranges.js similarity index 99% rename from javascript/994-Rotting-oranges.js rename to javascript/994-Rotting-Oranges.js index 2a12e49ae..28f1d9186 100644 --- a/javascript/994-Rotting-oranges.js +++ b/javascript/994-Rotting-Oranges.js @@ -37,4 +37,4 @@ } return fresh > 0 ? -1 : time; -}; \ No newline at end of file +};