力扣

解题思路: 广度优先搜索

1. 先找到所有的腐烂橘子,入队 (queue),用第一批带出新一批腐烂的橘子
2. 每一批橘子都会在一分钟之内腐烂 , 所以此题可以转化为求 BFS 执行的大循环的次数
3. 这里的 step (次数)  的更新需要有一个标记,只有新的腐烂的橘子加入(queue不为空), step 才能自加
4. 最后 BFS 执行完之后,说明所有可以被腐烂的都完成了,再去遍历 grid, 如何还有 值为1 的,说明没有办法完全腐烂,返回 -1, 如果没有,则返回 step
class Solution
{
public:   int dir[4][2] = {1 ,0 ,-1 ,0 ,0 ,1 ,0 ,-1} ;int orangesRotting(vector<vector<int>>& grid) {//用pair存放位置 queue<pair<int, int>> q; int row = grid.size(); int col = grid[0].size(); //已经腐烂的位置入队 for (int i = 0; i < row; ++i) { for (int j = 0; j < col; ++j) { if (grid[i][j] == 2) q.push(make_pair(i, j)); } }int count = 0;while(!q.empty()){size_t sz = q.size();int  flag = 0;//用当前这一批已经腐烂的橘子带出下一批要腐烂的橘子 //故要遍历队列中的所有位置while(sz--){int t_row = q.front().first;int t_col = q.front().second;q.pop();for(int i = 0 ; i < 4 ;++i){int new_row = t_row + dir[i][0];int new_col = t_col + dir[i][1];if(new_row < 0 || new_row >= row || new_col < 0 || new_col >= col || grid[new_row][new_col] != 1)continue; //如果位置越界或者是空格,或者已经是腐烂的位置,则跳过flag = 1;//标记有新的被腐烂grid[new_row][new_col] = 2;q.push(make_pair(new_row , new_col));}}if(flag)++count;}for (int i = 0; i < row; ++i) { for (int j = 0; j < col; ++j) { if(grid[i][j] == 1)return -1;} }return count;}};

LeetCode994. 腐烂的橘子( BFS )相关推荐

  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. 腐烂的橘子(C语言)

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

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

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

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

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

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

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

  8. LeetCode 994. 腐烂的橘子

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

  9. [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994

    [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994 唉--之前写过笔记总结的问题,还是又卡住了. 自挂东南枝-- 题目地址: Rotting Oranges 题目如下: ...

最新文章

  1. python动态图-Python图像处理之gif动态图的解析与合成操作详解
  2. java网格画线_java 网格输出的类--练习 stream
  3. 三菱变频器e700参数表_三菱Q系列PLC,用CCLink控制变频器正反转和多段速
  4. 音视频技术开发周刊 80期
  5. Golang Java 实现 【将有序数组装换为二叉搜索树】
  6. 【C语言】能不能更快?
  7. ubantu 添加防火墙策略_Ubuntu防火墙安装和配置
  8. 最常用的10种CSS BUG解决方法与技巧-浏览器兼容教程
  9. RTP 包格式 详细解析
  10. Java 用Myeclipse部署项目基础坏境搭建
  11. hasp运行不成功_HASP加密狗驱动程序没有安装成功如何解决
  12. 小米4android8.0root,小米小米 5X(安卓8.0)手机完美获取root教程,最强root工具,亲测可用!...
  13. pad平板性能测试软件,苹果iPad 2020款评测,最便宜的iPad,性能碾压安卓?
  14. 电脑主板各部件详细图解
  15. js android 复制粘贴板,js实现复制到粘贴板方法
  16. 积极主动沟通说话交流的重要性和案例以及技巧
  17. android开发 节省流量,流量节省程序模式  |  Android 开源项目  |  Android Open Source Project...
  18. C/C++ 八股文(二)
  19. Windows10彻底卸载VMWare虚拟机
  20. RHEL6/7更新系统的CA

热门文章

  1. 数据结构——图(存储结构)
  2. mybatis与mysql时间总是慢8小时
  3. 将年月日成一年中第几天
  4. 5000元的电视机推荐 5000元75寸高性价比电视推荐
  5. ciscoVLAN配置典型案例,很实用。
  6. 第二周 Ubuntu的简单介绍与使用
  7. Google Earth Engine APP ——Forest Health监测APP(可下载)
  8. Android 实现定位
  9. 安装win10 找不到固态硬盘
  10. MYSQL下载后的使用方法