问题描述

在给定的网格中,每个单元格可以有以下三个值之一:
值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。
返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

示例

输入:[[2,1,1],[1,1,0],[0,1,1]]
输出:4
输入:[[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。
输入:[[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

代码

class Solution {public int orangesRotting(int[][] grid) {if(grid==null||grid.length==0||grid[0].length==0)return 0;Queue<Integer> qx=new LinkedList<Integer>();Queue<Integer> qy=new LinkedList<Integer>();int live=0;for(int i=0;i<grid.length;i++) {for(int j=0;j<grid[0].length;j++) {if(grid[i][j]==1){live++;}else if(grid[i][j]==2) {qx.add(i);qy.add(j);}}}if(live==0)return 0;if(qx.size()==0)return -1;int res=0;Queue<Integer> qx1=new LinkedList<Integer>();Queue<Integer> qy1=new LinkedList<Integer>();while(live>0) {res++;while(qx.size()>0) {int i=qx.poll();int j=qy.poll();if(i-1>=0&&grid[i-1][j]==1) {grid[i-1][j]=2;live--;if(live==0)return res;qx1.add(i-1);qy1.add(j);}if(i+1<grid.length&&grid[i+1][j]==1) {grid[i+1][j]=2;live--;if(live==0)return res;qx1.add(i+1);qy1.add(j);}if(j-1>=0&&grid[i][j-1]==1) {grid[i][j-1]=2;live--;if(live==0)return res;qx1.add(i);qy1.add(j-1);}if(j+1<grid[0].length&&grid[i][j+1]==1) {grid[i][j+1]=2;live--;if(live==0)return res;qx1.add(i);qy1.add(j+1);}}if(qx1.size()==0)return -1;res++;while(qx1.size()>0) {int i=qx1.poll();int j=qy1.poll();if(i-1>=0&&grid[i-1][j]==1) {grid[i-1][j]=2;live--;if(live==0)return res;qx.add(i-1);qy.add(j);}if(i+1<grid.length&&grid[i+1][j]==1) {grid[i+1][j]=2;live--;if(live==0)return res;qx.add(i+1);qy.add(j);}if(j-1>=0&&grid[i][j-1]==1) {grid[i][j-1]=2;live--;if(live==0)return res;qx.add(i);qy.add(j-1);}if(j+1<grid[0].length&&grid[i][j+1]==1) {grid[i][j+1]=2;live--;if(live==0)return res;qx.add(i);qy.add(j+1);}}}return -1;}}

Leetcode994腐烂的橘子(宽搜)相关推荐

  1. Leetcode994腐烂的橘子(广度搜索法)

    Leetcode994腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格: 值 1 代表新鲜橘子: 值 2 代表腐烂的橘子. 每分钟,腐烂的橘 ...

  2. leetcode994. 腐烂的橘子(bfs)

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

  3. Leetcode--994. 腐烂的橘子(java)

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

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

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

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

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

  6. 文巾解题 994. 腐烂的橘子

    1 题目描述 2 解题思路 2.1 多源广搜 使用广搜的思想,但是和一般的广搜不同,这里一开始的队列不是一个元素,而是一开始就腐烂的所有橘子的坐标. 同时我们队列里面的每一个元素是一个三元组,分别是腐 ...

  7. leetcode 994:腐烂的橘子 java

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

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

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

  9. c++ 宽搜(倒水)

    题目描述 有一个很大的水缸和二个容量分别为X和Y的水壶,按照以下的规则倒水,问最少经几次倒水后,可得到Z升水 规则1:水缸向水壶1倒水,将水壶1装满: 规则2:水缸向水壶2倒水,将水壶2装满: 规则3 ...

  10. CSP认证201403-4 无线网络[C++题解]:宽搜、bfs最短路、图论

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析:BFS求最短路. 使用pair来存点的坐标,使用邻接表来存图. 宽搜模板套进来. 提供一组测试用例:注意可能爆int,所以需要用lon ...

最新文章

  1. 十八年前漏洞再现,影响所有Windows版本
  2. create_softLink.sh
  3. 多目标粒子群优化算法_基于粒子群优化的投资组合优化研究
  4. 《MySQL——选错索引,该如何做》
  5. C++(14)--面向对象
  6. 全网首发:WORD应该是布局绘制二合一
  7. 我的世界java安装_我的世界游戏安装教程 我的世界怎么安装
  8. snmpwalk 命令_Snmpwalk命令行示例
  9. mapgis二次开发教程
  10. 请教FlashCs3导入图片时出现无法导入问题。
  11. App Tamer for Mac(CPU优化电池管理工具)特别版
  12. 直播http-flv小调研
  13. Excel排序,数据透视图,公式预测
  14. backtrack回溯算法
  15. css----BFC,IFC,GFC,FFC的区别
  16. 总线(二)CAN通讯协议介绍
  17. 基于java swing的学生学籍管理系统
  18. docker 在线安装
  19. Failed to load resource: the server responded with a status of 404
  20. nanosim 仿真

热门文章

  1. 设计模式(五) 注解方式实现AOP
  2. 使用sourcetree 的git flow
  3. js判断IE浏览器的方法
  4. C++11实现模板手柄:委托构造函数、defaultkeyword分析
  5. 修改数据库表nbsp;字段参考的数据…
  6. Objective-C 日记② 关于self用法
  7. ibatis中输入/输出各种类型的参数分析及#与$区别 (转)
  8. BOW( opencv源码)
  9. 拓端tecdat|r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
  10. httpd linux启动脚本,Linux下一个智能重启Apache服务器的脚本分享