Leetcode994腐烂的橘子

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

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。

答题:

/**\* @param {number[][]} grid\* @return {number}*/
var orangesRotting = function(grid) {let m = grid.lengthlet n = grid[0].lengthlet queue = []let total = 0let count_2 = 0let count_1 = 0for(let i=0;i<m;i++){
​    for(let j =0;j<n;j++){
​      if(grid[i][j] === 2){
​        count_2 += 1
​        total++
​        queue.push([i,j])
​      }else if(grid[i][j] === 1){
​        total++
​        count_1 +=1
​      }
​    }}if (count_2 === total) return 0if (count_1 === total) return -1let count = 0while(queue.length){
​    let size = queue.length
​    let exit = false
​    for(let k=0;k<size;k++){
​      let [i,j] = queue.shift()
​      if(i-1>= 0 && grid[i-1][j] === 1){
​        queue.push([i-1,j])
​
​        grid[i-1][j] = 2
​        exit = true}
​      if(j-1>= 0 && grid[i][j-1] === 1){
​        queue.push([i,j-1])
​
​      grid[i][j-1] = 2
​        exit = true
​      }
​      if(i+1<m && grid[i+1][j] === 1){
​        queue.push([i+1,j])
​
​      grid[i+1][j] = 2
​        exit = true
​      }
​      if(j+1<n && grid[i][j+1] === 1){
​        queue.push([i,j+1])
​
​      grid[i][j+1] = 2exit = true
​      }
​    }
​    if(exit){
​      count++
​    }}for(let i=0;i<m;i++){
​    for(let j=0;j<n;j++){
​      if(grid[i][j] === 1){
​        return -1
​      }
​    }}return count};

重点是有些特殊情况要处理下,比如没有坏橘子的时候返回啥,没有好橘子的时候返回啥,什么情况下时间+1,什么情况下跳过走下一步。具体认真看下代码就好了。

Leetcode994腐烂的橘子(广度搜索法)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. leetcode 994.腐烂的橘子

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

  9. 994. 腐烂的橘子

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

最新文章

  1. Java实用教程笔记 常用实用类
  2. 程序运行的时间的估算
  3. NoSQL(3) 之Redis主从复制、哨兵和集群介绍及详细搭建步骤
  4. C++编程思想:父类函数隐藏
  5. php表单验证并使值变化,php – Zend_Form手动设置和验证字段值
  6. JUnit 5符合AssertJ
  7. VC++实现对远程计算机屏幕的监视
  8. @encode(type)的使用
  9. BZOJ4278 : [ONTAK2015]Tasowanie
  10. 《统一沟通-微软-实战》-6-部署-1-前端服务器-3-拓扑设计
  11. redis映射的概念_在K8S上搭建Redis集群
  12. NYOJ--31 5个数求最值
  13. 华为笔试题分享:分糖果
  14. 我对秒杀在技术性上的一些看法
  15. vb标准(一):用户界面的设计
  16. Cadence Orcad Capture新建原理图Symbol及新建和添加元件库到工程的方法图文教程及视频演示
  17. C#之判断字母大小、字母转ACII码
  18. 微信JSAPI支付 - 服务商模式下子商户 统一下单的注意事项
  19. 医院计算机系统日常维护记录表,医院计算机信息管理系统维护措施
  20. PostgreSQL 15 preview -:你了解PostgreSQL GUC 参数吗?

热门文章

  1. 3D卷积“LP-3DCNN: Unveiling Local Phase in 3D Convolutional Neural Networks”
  2. ARM Mali-V VPU视频处理单元介绍 V61 V550 V500
  3. 【采集项目-(4)业务数据采集】
  4. craftsmanship中文_craftsmanship
  5. 如何组织大型软件项目的投标
  6. web前端代码开发工具_Web开发人员的有用代码比较工具
  7. 【日常】有道云笔记markdown数学公式格式转换脚本
  8. 32位浮点数转十进制
  9. 视频教程-微信公众号实战(Java版本,带前后台)-微信开发
  10. AIGC时代,推荐几个高质量的人工智能公众号!