994. 腐烂的橘子

在给定的网格中,每个单元格可以有以下三个值之一:

  • 值 0 代表空单元格;
  • 值 1 代表新鲜橘子;
  • 值 2 代表腐烂的橘子。

每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。

返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1

输入:[[2,1,1],[1,1,0],[0,1,1]]
输出:4

示例 2:

输入:[[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。

示例 3:

输入:[[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

提示:

  1. 1 <= grid.length <= 10
  2. 1 <= grid[0].length <= 10
  3. grid[i][j] 仅为 01 或 2
    var orangesRotting = function(grid) {if(grid.length === 0) return 0;let enumOrange = [[1,0],[0,1],[-1,0],[0,-1]],freshNum = 0,rots = [],x = grid.length,y = grid[0].length,step=0;for(let i=0; i<x; i++){for(let j=0; j<y; j++){if(grid[i][j] === 1){freshNum++;}else if(grid[i][j]===2){rots.push([i, j])}}}if(freshNum === 0) return 0;while(rots.length){if(freshNum === 0) return step;step++;let num = rots.length;for (let i = 0; i < num; i++) {let curr = rots.shift();for(let k=0; k<enumOrange.length; k++){let m = enumOrange[k][0],n = enumOrange[k][1];let next = grid[curr[0]+m] && grid[curr[0]+m][curr[1]+n];if(next===1){grid[curr[0]+m][curr[1]+n] = 2;rots.push([curr[0]+m, curr[1]+n]);freshNum--;} }};}return -1
}

复盘:

枚举类型和for of的应用

转载于:https://www.cnblogs.com/zhangzs000/p/10465692.html

994. 腐烂的橘子相关推荐

  1. LeetCode 994. 腐烂的橘子

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

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

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

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

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

  4. leetcode 994:腐烂的橘子 java

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

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

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

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

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

  7. leetcode 994.腐烂的橘子

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

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

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

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

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

最新文章

  1. python读取一个图像_从图像处理python的文件中读取多个图像
  2. k-modes算法mysql_第十一章 K-Means(K均值)算法模型实现(中)
  3. Sql Server 查询语句
  4. hibernate中@Entity和@Table的区别
  5. 20155301实验三 免杀原理与实践
  6. NYOJ176 整数划分(二)
  7. 通过 .NET NativeAOT 实现用户体验升级
  8. js获取一个月份最大天数和获取月的最后一天
  9. go语言基础之导入包的常用方法
  10. java JDBC操作MySQL数据库
  11. c++餐饮管理系统_扎哈·哈迪德建筑事务所赢得深圳湾超级总部基地C塔项目国际竞赛...
  12. python和c#区别_Python和C#哪个好?有什么区别?
  13. Android10支持dcip3,dcip3 相当于多少srgb
  14. 分布式 | dble 读写分离场景下为什么普通的读 sql 发送到了 master 实例上
  15. python xls文件转为csv
  16. Docker - 配置国内加速器加速镜像下载
  17. 你不知道的JavaScript(上卷)- - 书本知识点记录
  18. html 网页不可以复制粘贴,网页上的文字不能复制,三种方法教你复制全网文字...
  19. 自学 iOS 开发的一些经验
  20. android 禁止媒体扫描,Android通过.nomedia文件禁止多媒体库扫描指定文件夹下的多媒体文件...

热门文章

  1. Git同时使用不同平台代码仓库
  2. Visual C++中MFC消息的分类
  3. Test on 09/04/2016
  4. USACO3.15stamps(dp)
  5. 稳定高效大型系统架构---集群中间件开发
  6. 红旗系统linux忘了开机密码,红旗Linux6.0中忘记了root密码
  7. Linux下MySQL数据库常用基本操作 一
  8. Java Spring IOC用法
  9. Shell编程关于Sha-Bang(#!)
  10. python每隔30s检查一次_用Python写一个“离线语音提示器”来提醒我们别忘记了时间...