力扣994:腐烂的橘子(BFS)
简单的广度优先搜索(BFS)问题:用队列存储每批腐烂的橘子。按批次取出腐烂的橘子,取出腐烂橘子的同时放入由新鲜变腐烂的橘子。
import java.util.LinkedList;
import java.util.Queue;class Solution {int[][] dist = {{-1,0},{1,0},{0,1},{0,-1}};//上下左右四个方向public int orangesRotting(int[][] grid) {int time = 0;//计时Queue<int[]> queue = new LinkedList<int[]>();int n = grid.length;int m = grid[0].length;boolean[][] booleans = new boolean[n][m];for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(grid[i][j] == 2){//首批腐烂的橘子赋值为true,防止重复遍历queue.offer(new int[]{i,j});//腐烂的橘子加入队列booleans[i][j] = true;}if(grid[i][j] == 0){//空单元格不做处理,防止遍历设值为truebooleans[i][j] = true;}}}int[] a = new int[2];while(!queue.isEmpty()){int num = queue.size();//每批腐烂橘子的个数int flag = 0;//若腐烂橘子能感染新鲜的橘子就改变flag的值。for(int number = 0;number < num;number++){a = queue.poll();for(int i = 0;i < 4;i++){int x = a[0] + dist[i][0];int y = a[1] + dist[i][1];if(x>=0&&y>=0&&x<n&&y<m&&booleans[x][y]!=true){grid[x][y] = 2;queue.offer(new int[]{x,y});booleans[x][y] = true;flag = 1;}}}if(flag == 1){time++;}}//遍历所有单元格,若存在新鲜橘子则返回-1,否则返回时间。for(int i = 0; i < n;i++){for(int j = 0;j < m;j++){if(grid[i][j] == 1){return -1;}}}return time;}
}
力扣994:腐烂的橘子(BFS)相关推荐
- (力扣)LeetCode994. 腐烂的橘子(C语言)
一.环境说明 本文是 LeetCode 994题 : 腐烂的橘子,使用c语言实现 模拟广度优先遍历. 测试环境:Visual Studio 2019 二.代码展示 typedef struct que ...
- 994. 腐烂的橘子(Leetcode)(多源BFS)
994. 腐烂的橘子 难度简单85 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方 ...
- leetcode 994:腐烂的橘子 java
994. 腐烂的橘子 - 力扣(LeetCode) (leetcode-cn.com) 多源广度优先搜索,初始的所有的腐烂橘子,等价于广度优先搜索的同一层,然后对每一层进行搜索: class Solu ...
- LeetCode 994. 腐烂的橘子
994. 腐烂的橘子 思路:直接bfs会出现2个腐烂的橘子在两边同时进行,这样会错误. 正确思路:每分钟变化后所有橘子状态为next_grid,直到橘子状态不改变.如果状态不变,且无新鲜的橘子则返回时 ...
- 994. 腐烂的橘子
994. 腐烂的橘子 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新 ...
- 【广度优先搜索】leetcode 994. 腐烂的橘子
994. 腐烂的橘子 文章目录 题目描述 示例1: 示例2: 示例3: 提示 方法:多源广度优先搜索 解题思路 代码 复杂度分析 题目描述 在给定的 m x n 网格 grid 中,每个单元格可以有以 ...
- LeetCode 994. 腐烂的橘子(图的BFS)
1. 题目 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会 ...
- 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子
一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...
- LeetCode994. 腐烂的橘子( BFS )
力扣 解题思路: 广度优先搜索 1. 先找到所有的腐烂橘子,入队 (queue),用第一批带出新一批腐烂的橘子 2. 每一批橘子都会在一分钟之内腐烂 , 所以此题可以转化为求 BFS 执行的大循环的次 ...
- 994. 腐烂的橘子 (广度探索)
解题思路 本题的核心思路是:只考虑1.2右面和下面的 如果是0,不管: 如果是1,只要右面和下面有2 ,自己就感染为2: 如果是2,只要右面和下面是1,将其感染为3(目的是让它在本轮内无法感染别人): ...
最新文章
- 结构体在多线程中用法
- r型聚类典型指标_聚类与RFM模型 —— 从5月的一道腾讯数据分析面试题说起
- Smartform下載PDF
- 弹出对话框提示输入_每日一贴——如何关闭CAD的各种提示信息和对话框?
- c# 分类 机器学习_C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”...
- win8下vs2012加wp8 sdk开发xna4.0PC游戏
- canvas的getImageData和putImageDataAPI
- C#中的as和is的使用方法
- C语言中的undefined behavior系列(2)-- lifetime of object
- 使用actuator优雅地停止SpringBoot应用
- CSS z-index 属性 控制div上下层次
- vb通过ado连接oracle数据库,vb ado连接oracle数据库
- Java——三大分支:JavaSE、JavaEE、JavaME(概念理解)
- 利用SEQ2SEQ模型实现车牌识别
- 电脑桌面有HTML一直删除不了,IE浏览器首页地址被改或桌面顽固IE快捷方式无法删除...
- android电视与苹果手机图片,小米电视怎么投屏?图文讲解安卓和苹果手机投屏到小米电视方法...
- PS中放大图片不失真的方法
- 2021年中国传统文化锦集(中国人必须了解的)
- UEFI HOB 学习
- JS获取当前时间的前几天、前几周、前几个月、前几年的时间