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

力扣HOT100之图论:994. 腐烂的橘子


这道题属于是BFS的模板题,很像病毒扩散的过程,之前在刷代码随想录的时候也刷过类似的题目,具体的BFS代码写法可以参照这篇博客我们需要统计出腐烂至全地图时所需的最少扩散次数,当然也存在有的橘子无法被腐烂的情况,因此我们需要先统计初始状态下的新鲜橘子个数,每当扩散一次,被扩散的新鲜橘子就变成腐烂橘子,并将新鲜的橘子数减去对应的数量,当扩散结束后,如果新鲜的橘子数量大于0,则说明无法腐烂所有的橘子,我们直接返回-1,否则就直接返回扩散的轮数。由于初始状态下的腐烂橘子可能不止一个,我们需要将初始状态下的腐烂橘子坐标添加到队列中,然后再开始扩散。扩散过程需要用两重while循环来实现,外层while循环每循环一次,就代表扩散了一次,内层while循环每循环一次,就是从当前的其中一个腐烂橘子向四周扩散了一次,被腐烂的橘子将加入队列,但是不会参与内层循环的过程,因为在内层循环腐烂的橘子并不是本轮的初始腐烂橘子,应当在下一次外层while循环中进行扩散。

class Solution {
public:int orangesRotting(vector<vector<int>>& grid) {int result = 0;//定义4个方向vector<vector<int>> dirs ={{0, 1},      //向右{0, -1},     //向左{1, 0},      //向下{-1, 0}      //向上};int m = grid.size(), n = grid[0].size();  //m行n列int fresh = 0;  //统计初始状态下新鲜橘子的数量queue<pair<int, int>> My_Queue;  //用于存放网格坐标//统计新鲜的橘子数量和腐烂橘子的初始位置for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(grid[i][j] == 1) fresh++;if(grid[i][j] == 2)My_Queue.push({i, j});}}while(fresh > 0 && !My_Queue.empty()){int size = My_Queue.size();while(size > 0){pair<int, int> current = My_Queue.front();My_Queue.pop();size--;for(auto dir : dirs){int next_x = current.first + dir[0];int next_y = current.second + dir[1];if((next_x < 0 || next_x >= m) || (next_y < 0 || next_y >= n))continue;   //越界访问直接跳过if(grid[next_x][next_y] == 1){grid[next_x][next_y] = 2;fresh--;My_Queue.push({next_x, next_y});}}}result++;}return fresh > 0 ? -1 : result;}
};

相关文章:

  • 为什么抗干扰天线不能做RTK差分(三)“既要又要”的抗干扰天线
  • 冒泡排序:轻松理解与实现
  • VSCode 插件 GitLens 破解方法
  • 中文域名25周年,取得哪些里程碑式的进展?
  • 百度飞桨PaddleOCR 3.0开源发布 OCR精度跃升13%
  • word为章节标题添加自动编号
  • 一个C#跨平台的机器视觉和机器学习的开源库
  • Pandas:数据分析中的缺失值检测、加载、设置、可视化与处理
  • 《精灵宝可梦特别篇》漫画集 4部合集共76卷,PDF格式分享
  • python 实现一个完整的基于Python的多视角三维重建系统,包含特征提取与匹配、相机位姿估计、三维重建、优化和可视化等功能
  • 【心海资源】黄金首饰价格查询单页源码
  • HarmonyOS 鸿蒙应用开发基础:转换整个PDF文档为图片功能
  • epub→pdf | which 在线转换??好用!!
  • 医学人工智能中的分层处理与跨模态融合:深度架构设计研究(基础教程.上)
  • echarts实现项目进度甘特图
  • 【ubuntu】安装NVIDIA Container Toolkit
  • 电脑无法识别打印机usb设备怎么办 一键解决!
  • Django 中的 ORM 基础语法
  • 如何最简单、通俗地理解什么是NLP?
  • React Hooks底层执行逻辑详解、自定义Hooks、FiberScheduler
  • 山西太原做网站/51链
  • 个人备案的网站竞价排名做不了/网络运营与推广
  • 厦门+外贸公司做网站/全网seo是什么意思
  • 怎么做类似淘宝一样的网站/网站宣传推广方案
  • 深圳网站建设61916/青岛网站关键词排名优化
  • 做美女图片网站犯法吗/微信视频号小店