From 540986c4058f9c3185a3bf3c4ed81949471cfe7e Mon Sep 17 00:00:00 2001 From: camiloibarrayepes Date: 2021年10月11日 21:43:16 -0500 Subject: [PATCH 1/2] Rotting Orange Algorithm #765 An Amazon coding interview question: Rotting orange in Javascript Language --- Sorts/rottingOranges.js | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Sorts/rottingOranges.js diff --git a/Sorts/rottingOranges.js b/Sorts/rottingOranges.js new file mode 100644 index 0000000000..8f727cf9dc --- /dev/null +++ b/Sorts/rottingOranges.js @@ -0,0 +1,48 @@ +//https://leetcode.com/problems/rotting-oranges/ + +/* You are given an m x n grid where each cell can have one of three values: + +0 representing an empty cell, +1 representing a fresh orange, or +2 representing a rotten orange. +Every minute, any fresh orange that is 4-directionally adjacent to a rotten orange becomes rotten. + +Return the minimum number of minutes that must elapse until no cell has a fresh orange. If this is impossible, return -1. */ + +var orangesRotting = function(grid) { + var X = grid[0].length; + var Y = grid.length; + var queue=[]; + var map={}; + var rotten; + var ans = 0; + for(var x = 0; x < X; x++){ + for(var y = 0; y < Y; y++){ + if(grid[y][x] == 2){ + queue.push(y*X+x); + map[y*X+x]=0; + } + } + } + while((rotten = queue.shift())!=undefined){ + var x = rotten % X; + var y = Math.floor(rotten / X); + for(var i = 0; i < 4; i++){ + var mx = x+dx[i]; + var my = y+dy[i]; + if(mx>= 0 && mx < X && my>= 0 && my Date: 2021年10月11日 21:47:15 -0500 Subject: [PATCH 2/2] Update script --- Sorts/rottingOranges.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sorts/rottingOranges.js b/Sorts/rottingOranges.js index 8f727cf9dc..2bab9c423d 100644 --- a/Sorts/rottingOranges.js +++ b/Sorts/rottingOranges.js @@ -9,6 +9,9 @@ Every minute, any fresh orange that is 4-directionally adjacent to a rotten oran Return the minimum number of minutes that must elapse until no cell has a fresh orange. If this is impossible, return -1. */ + +var dx = [-1,0,+1,0]; +var dy = [0,-1,0,+1]; var orangesRotting = function(grid) { var X = grid[0].length; var Y = grid.length;

AltStyle によって変換されたページ (->オリジナル) /