当前位置: 首页 > news >正文

【LeetCode-中等题】994. 腐烂的橘子

文章目录

    • 题目
    • 方法一:bfs+层序遍历

题目

在这里插入图片描述

该题值推荐用bfs,因为是一层一层的感染,而不是一条线走到底的那种,所以深度优先搜索不适合

方法一:bfs+层序遍历

广度优先搜索,就是从起点出发,每次都尝试访问同一层的节点,如果同一层都访问完了,再访问下一层,最后广度优先搜索找到的路径就是从起点开始的最短合法路径。

在该题:假设图中只有一个腐烂的橘子,它每分钟向外拓展,腐烂上下左右相邻的新鲜橘子,那么下一分钟,就是这些被腐烂的橘子再向外拓展腐烂相邻的新鲜橘子,这与广度优先搜索的过程均一一对应,上下左右相邻的新鲜橘子就是该腐烂橘子尝试访问的同一层的节点,路径长度就是新鲜橘子被腐烂的时间。
在这里插入图片描述

class Solution {
// 方法一 : bfs   int m = 0;int n = 0;//  全局 格子宽度和长度int minute = 0;//全局  最小分钟数int fulash = 0;// 记录1的个数public int orangesRotting(int[][] grid) {m = grid.length;n = grid[0].length;Queue<int[]> queue = new LinkedList<>();for(int i = 0; i<m ; i++)for(int j = 0; j<n ; j++){if(grid[i][j] == 1 ) fulash++;//记录新鲜橘子的个数if(grid[i][j] == 2 ){grid[i][j] = 2;queue.offer(new int[]{i,j});//将坏橘子坐标数组 存入队列}}//层序遍历while(!queue.isEmpty() && fulash > 0){// 当队列空了 或者 没有新鲜橘子了,停止循环int size = queue.size();minute++;// 一层一层的传染,每传染一层,时间+1for(int i = 0 ; i<size ;i++){int[] mid = queue.poll();int x = mid[0];int y = mid[1];//上if(x+1 < m && grid[x+1][y]== 1 ){fulash--; // 每传染一个,更新新鲜橘子的数量grid[x+1][y] = 2;//将新鲜果子感染queue.offer(new int[]{x+1,y});//将感染的果子加入队列,进行下一层的处理}//下if(x-1 >=0 && grid[x-1][y]== 1 ){fulash--;grid[x-1][y] = 2;queue.offer(new int[]{x-1,y});}//右if(y+1 < n && grid[x][y+1]== 1 ){fulash--;grid[x][y+1] = 2;queue.offer(new int[]{x,y+1});}//左if(y-1 >=0 && grid[x][y-1]== 1 ){fulash--;grid[x][y-1] = 2;queue.offer(new int[]{x,y-1});  }}}if(fulash > 0) return -1;//若还有新鲜橘子  则返回-1else  return minute;//无新鲜橘子  则返回minute}}
http://www.lryc.cn/news/152885.html

相关文章:

  • K8s部署单机mysql
  • Midjourney学习(二)参数的基础
  • Ubuntu安装Protobuf,指定版本
  • 没有使用sniffer dongle在windows抓包蓝牙方法分享
  • 解决Debian系统通过cifs挂载smb后,中文目录乱码问题
  • springboot整合jquery实现前后端数据交互
  • TypeScript 中的类型检查实用函数
  • JavaScript中的事件委托(event delegation)
  • ubuntu OCR 脚本
  • Go死码消除
  • 基于改进莱维飞行和混沌映射的粒子群优化BP神经网络分类研究(Matlab代码实现)
  • 12. 自动化项目实战
  • Window11下载安装jdk8-jdk11与环境变量的配置
  • Vector Search with OpenAI Embeddings: Lucene Is All You Need
  • JS算法与树(二)
  • composer 扩展库。助手库文档
  • Web弹性布局
  • 基于深度学习的AI生成式人脸图像鉴别
  • iOS开发Swift-1-Xcode创建项目
  • AI 领域中 SLAM、Planning 和 Perception 的区别和联系
  • 【数据库】MySQL基础知识全解
  • 【golang】调度系列之goroutine
  • A 股个股资金流 API 数据接口
  • 【前端】Layui动态数据表格拖动排序
  • Linux 忘记密码解决方法
  • 【计算机组成 课程笔记】2.1 设计自己的计算机
  • vb房屋销售管理系统设计与实现
  • SpringCloud学习笔记(十三)_Zipkin使用SpringCloud Stream以及Elasticsearch
  • 重仓“AI”的百度迎来收获季?
  • Linux 通过 Docker 部署 Nacos 2.2.3 服务发现与配置中心