简单的广度优先搜索(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)相关推荐

  1. (力扣)LeetCode994. 腐烂的橘子(C语言)

    一.环境说明 本文是 LeetCode 994题 : 腐烂的橘子,使用c语言实现 模拟广度优先遍历. 测试环境:Visual Studio 2019 二.代码展示 typedef struct que ...

  2. 994. 腐烂的橘子(Leetcode)(多源BFS)

    994. 腐烂的橘子 难度简单85 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方 ...

  3. leetcode 994:腐烂的橘子 java

    994. 腐烂的橘子 - 力扣(LeetCode) (leetcode-cn.com) 多源广度优先搜索,初始的所有的腐烂橘子,等价于广度优先搜索的同一层,然后对每一层进行搜索: class Solu ...

  4. LeetCode 994. 腐烂的橘子

    994. 腐烂的橘子 思路:直接bfs会出现2个腐烂的橘子在两边同时进行,这样会错误. 正确思路:每分钟变化后所有橘子状态为next_grid,直到橘子状态不改变.如果状态不变,且无新鲜的橘子则返回时 ...

  5. 994. 腐烂的橘子

    994. 腐烂的橘子 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新 ...

  6. 【广度优先搜索】leetcode 994. 腐烂的橘子

    994. 腐烂的橘子 文章目录 题目描述 示例1: 示例2: 示例3: 提示 方法:多源广度优先搜索 解题思路 代码 复杂度分析 题目描述 在给定的 m x n 网格 grid 中,每个单元格可以有以 ...

  7. LeetCode 994. 腐烂的橘子(图的BFS)

    1. 题目 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会 ...

  8. 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子

    一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...

  9. LeetCode994. 腐烂的橘子( BFS )

    力扣 解题思路: 广度优先搜索 1. 先找到所有的腐烂橘子,入队 (queue),用第一批带出新一批腐烂的橘子 2. 每一批橘子都会在一分钟之内腐烂 , 所以此题可以转化为求 BFS 执行的大循环的次 ...

  10. 994. 腐烂的橘子 (广度探索)

    解题思路 本题的核心思路是:只考虑1.2右面和下面的 如果是0,不管: 如果是1,只要右面和下面有2 ,自己就感染为2: 如果是2,只要右面和下面是1,将其感染为3(目的是让它在本轮内无法感染别人): ...

最新文章

  1. 结构体在多线程中用法
  2. r型聚类典型指标_聚类与RFM模型 —— 从5月的一道腾讯数据分析面试题说起
  3. Smartform下載PDF
  4. 弹出对话框提示输入_每日一贴——如何关闭CAD的各种提示信息和对话框?
  5. c# 分类 机器学习_C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”...
  6. win8下vs2012加wp8 sdk开发xna4.0PC游戏
  7. canvas的getImageData和putImageDataAPI
  8. C#中的as和is的使用方法
  9. C语言中的undefined behavior系列(2)-- lifetime of object
  10. 使用actuator优雅地停止SpringBoot应用
  11. CSS z-index 属性 控制div上下层次
  12. vb通过ado连接oracle数据库,vb ado连接oracle数据库
  13. Java——三大分支:JavaSE、JavaEE、JavaME(概念理解)
  14. 利用SEQ2SEQ模型实现车牌识别
  15. 电脑桌面有HTML一直删除不了,IE浏览器首页地址被改或桌面顽固IE快捷方式无法删除...
  16. android电视与苹果手机图片,小米电视怎么投屏?图文讲解安卓和苹果手机投屏到小米电视方法...
  17. PS中放大图片不失真的方法
  18. 2021年中国传统文化锦集(中国人必须了解的)
  19. UEFI HOB 学习
  20. JS获取当前时间的前几天、前几周、前几个月、前几年的时间

热门文章

  1. 分享五个绝对称得上妖艳古怪精灵的前端代码效果
  2. 前端新手HTML入门
  3. 我对智能网卡offload的认识
  4. Learning Agile software Development
  5. 海康威视监控摄像头连接电脑教程
  6. 2017cad光标大小怎么调_怎么设置CAD中十字光标的长度
  7. 订单用户表2(用户名查询、手机号查询、选择城市、选择状态、选择月份、ID排序、添加数据、批量发货、批量删除、敏感字、修改数据)
  8. 服务端接入验证苹果支付receipt
  9. 一个程序员的心路历程
  10. 蓝桥杯2021年PYTHON 真题,跳房子