南通仿站定制模板建站,电子商务网站设计模板,养老网站建设 中企动力,信用网站建设意义994. 腐烂的橘子 在给定的网格中#xff0c;每个单元格可以有以下三个值之一#xff1a; 值 0 代表空单元格#xff1b;值 1 代表新鲜橘子#xff1b;值 2 代表腐烂的橘子。每分钟#xff0c;任何与腐烂的橘子#xff08;在 4 个正方向上#xff09;相邻的新鲜橘子都会腐… 994. 腐烂的橘子 在给定的网格中每个单元格可以有以下三个值之一 值 0 代表空单元格值 1 代表新鲜橘子值 2 代表腐烂的橘子。每分钟任何与腐烂的橘子在 4 个正方向上相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能返回 -1。 输入[[2,1,1],[1,1,0],[0,1,1]]
输出4示例 2 输入[[2,1,1],[0,1,1],[1,0,1]]
输出-1
解释左下角的橘子第 2 行 第 0 列永远不会腐烂因为腐烂只会发生在 4 个正向上。示例 3 输入[[0,2]]
输出0
解释因为 0 分钟时已经没有新鲜橘子了所以答案就是 0 。提示 1 grid.length 101 grid[0].length 10grid[i][j] 仅为 0、1 或 2 var orangesRotting function(grid) {if(grid.length 0) return 0;let enumOrange [[1,0],[0,1],[-1,0],[0,-1]],freshNum 0,rots [],x grid.length,y grid[0].length,step0;for(let i0; ix; i){for(let j0; jy; j){if(grid[i][j] 1){freshNum;}else if(grid[i][j]2){rots.push([i, j])}}}if(freshNum 0) return 0;while(rots.length){if(freshNum 0) return step;step;let num rots.length;for (let i 0; i num; i) {let curr rots.shift();for(let k0; kenumOrange.length; k){let m enumOrange[k][0],n enumOrange[k][1];let next grid[curr[0]m] grid[curr[0]m][curr[1]n];if(next1){grid[curr[0]m][curr[1]n] 2;rots.push([curr[0]m, curr[1]n]);freshNum--;} }};}return -1
} 复盘 枚举类型和for of的应用 转载于:https://www.cnblogs.com/zhangzs000/p/10465692.html