LeetCode_多源 BFS_中等_994.腐烂的橘子
目录
- 1.题目
- 2.思路
- 3.代码实现(Java)
1.题目
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:
- 值 0 代表空单元格;
- 值 1 代表新鲜橘子;
- 值 2 代表腐烂的橘子。
每分钟,腐烂的橘子周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。
示例 1:
输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4
示例 2:
输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。
示例 3:
输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0。
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 10
grid[i][j] 仅为 0、1 或 2
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotting-oranges
2.思路
(1)多源 BFS
思路参考本题官方题解。
3.代码实现(Java)
//思路1————多源 BFS
class Solution {int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};public int orangesRotting(int[][] grid) {int m = grid.length;int n = grid[0].length;Queue<Integer> queue = new ArrayDeque<>();//存储橘子腐烂所需要的时间Map<Integer, Integer> depthMap = new HashMap<>();for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == 2) {int code = i * n + j;queue.offer(code);depthMap.put(code, 0);}}}// res 记录单元格中没有新鲜橘子为止所必须经过的最小分钟数int res = 0;while (!queue.isEmpty()) {int code = queue.poll();int i = code / n;int j = code % n;for (int[] dir : dirs) {int ni = i + dir[0];int nj = j + dir[1];if (ni >= 0 && ni < m && nj >= 0 && nj < n && grid[ni][nj] == 1) {grid[ni][nj] = 2;int ncode = ni * n + nj;queue.offer(ncode);depthMap.put(ncode, depthMap.get(code) + 1);res = depthMap.get(ncode);}}}//判断网格中是否还有新鲜橘子,如果有则返回 -1for (int[] row : grid) {for (int v : row) {if (v == 1) {return -1;}}}return res;}
}
LeetCode_多源 BFS_中等_994.腐烂的橘子相关推荐
- 994. 腐烂的橘子(Leetcode)(多源BFS)
994. 腐烂的橘子 难度简单85 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方 ...
- 文巾解题 994. 腐烂的橘子
1 题目描述 2 解题思路 2.1 多源广搜 使用广搜的思想,但是和一般的广搜不同,这里一开始的队列不是一个元素,而是一开始就腐烂的所有橘子的坐标. 同时我们队列里面的每一个元素是一个三元组,分别是腐 ...
- 【广度优先搜索】leetcode 994. 腐烂的橘子
994. 腐烂的橘子 文章目录 题目描述 示例1: 示例2: 示例3: 提示 方法:多源广度优先搜索 解题思路 代码 复杂度分析 题目描述 在给定的 m x n 网格 grid 中,每个单元格可以有以 ...
- Leetcode广度优先搜索笔记2 腐烂的橘子
994. 腐烂的橘子:带有变量控制的矩阵中的广度优先搜索 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的 ...
- leetcode 994:腐烂的橘子 java
994. 腐烂的橘子 - 力扣(LeetCode) (leetcode-cn.com) 多源广度优先搜索,初始的所有的腐烂橘子,等价于广度优先搜索的同一层,然后对每一层进行搜索: class Solu ...
- 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子
一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...
- leetcode 994.腐烂的橘子
题目: 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂 ...
- 994. 腐烂的橘子
994. 腐烂的橘子 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新 ...
- leetcode994. 腐烂的橘子(bfs)
在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂. 返回 ...
最新文章
- Linux通过XAMPP集成软件包搭建LAMPP环境
- Python 网易新闻热点新闻爬虫
- opengl加载显示3D模型STL类型文件
- SAP Cloud Application Programming 介绍(2021 更新版)
- Holedox Moving
- MySQL LIST分区(转载)
- vue.js语法和常用指令
- 【LaTeX笔记1】最全命令+符号
- 【MMD】MikuMikuDance入门必备网址整理
- 前端车牌识别SDK算法及原理
- 基于ricequant的lstm时间序列股价预测(pytorch)
- 宇视手机客户端共享/分享设备配置操作
- EXCEL使用技巧大全:输入的技巧
- matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
- ArcMap进行线符号制作
- 【完整源码】如何在BSC部署多代层级分红
- 使用Outlook 2007待办事项栏
- python使用xlwings库操作Excel常见操作
- 关于网络广告的的概念
- 真正厉害的人,都在延迟满足