※994 腐烂的橘子(java)(广度优先搜索)

阅读: 评论:0

※994	 腐烂的橘子(java)(广度优先搜索)

※994 腐烂的橘子(java)(广度优先搜索)

在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 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 <= 10
1 <= grid[0].length <= 10
grid[i][j] 仅为 0、1 或 2来源:力扣(LeetCode)
链接:
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {int[][] dir = {{1,0}, {0,1}, {-1,0}, {0,-1}};//多源广度优先public int orangesRotting(int[][] grid) {Queue<Integer> queue = new LinkedList<>();Map<Integer, Integer> map = new HashMap<>();int m = grid.length;int n = grid[0].length;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){int node = i*n + j;if(grid[i][j] == 2) {queue.add(node);map.put(node, 0);}}} int res = 0;while(!queue.isEmpty()){int node = queue.poll();int i = node/n;int j = node%n;for(int k = 0; k < 4; k++){int ni = i + dir[k][0];int nj = j + dir[k][1];if(ni >= 0 && nj >= 0 && ni < m && nj < n && grid[ni][nj] == 1){grid[ni][nj] = 2;int node2 = ni*n + nj;queue.add(node2);int tmp = (node)+1;map.put(node2, tmp);res = tmp;}}}for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(grid[i][j] == 1) return -1;}}return res;}
}

本文发布于:2024-02-01 02:56:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170672741533374.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:广度   橘子   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23