公司网站设计是不是一次性收费的,比较好的logo设计网站,备案做电影网站吗,国家企业信息系统公示系统下载在给定的网格中#xff0c;每个单元格可以有以下三个值之一#xff1a;
值 0 代表空单元格#xff1b; 值 1 代表新鲜橘子#xff1b; 值 2 代表腐烂的橘子。 每分钟#xff0c;任何与腐烂的橘子#xff08;在 4 个正方向上#xff09;相邻的新鲜橘子都会腐烂。
返回直…在给定的网格中每个单元格可以有以下三个值之一
值 0 代表空单元格 值 1 代表新鲜橘子 值 2 代表腐烂的橘子。 每分钟任何与腐烂的橘子在 4 个正方向上相邻的新鲜橘子都会腐烂。
返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能返回 -1。
输入[[2,1,1],[1,1,0],[0,1,1]] 输出4
代码
class Solution {public int orangesRotting(int[][] grid) {Queueint[] queuenew LinkedList();int[][] dirnew int[][]{{-1,0},{1,0},{0,1},{0,-1}};for(int i0;igrid.length;i)for(int j0;jgrid[0].length;j)//将初始的烂橘子入队if(grid[i][j]2){queue.offer(new int[]{i,j});}int res0;while (!queue.isEmpty())//bfs{int sizequeue.size();for(int i0;isize;i){int[] equeue.poll();int exe[0],eye[1];for(int[] d:dir){int nextXexd[0],nextYeyd[1];if(nextX0||nextXgrid.length||nextY0||nextYgrid[0].length||grid[nextX][nextY]0||grid[nextX][nextY]2)continue;grid[nextX][nextY]2;//标记为腐烂queue.offer(new int[]{nextX,nextY});}}res;}int z0;for(int i0;igrid.length;i)for(int j0;jgrid[0].length;j)//检查是否还有没腐烂的橘子if(grid[i][j]1){z;} if(z0) return -1;//还有橘子没烂else if(res0)//初始没有烂的橘子return 0;else return res-1;}
}