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

50.腐烂的橘子

1.题目描述

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

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

每分钟,腐烂的橘子周围 4 个方向上相邻的新鲜橘子都会腐烂。

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

2.题目思路

这是通用的BFS思路,关于图和树都可以用,如二叉树的右视图,计算二叉树的层数等题目

depth = 0 # 记录遍历到第几层 while queue 非空: depth++ n = queue 中的元素个数 循环 n 次: node = queue.pop() for node 的所有相邻结点 m: if m 未访问过: queue.push(m)

3.代码及详细注释

class Solution { public: int orangesRotting(vector<vector<int>>& grid) { //1.计算腐烂橘子和好橘子,并把腐烂橘子全都入队表示0min时刻 int count=0; queue<pair<int,int>> q; int M = grid.size(); int N = grid[0].size(); for(int i = 0;i<=M-1;i++){ for(int j = 0;j<=N-1;j++){ if(grid[i][j]==1){ count++;//好橘子总数 } else if(grid[i][j]==2){ q.push({i,j}); } } } if(count==0) return 0; int round = 0;//返回的结果 int fresh = 0; while(fresh < count &&!q.empty()){//注意这个条件,最后个新鲜橘子即将被腐烂的状态,grid[i][j]=2,fresh ==count了,然后入队列被腐烂的橘子,队列不为空,还会进行一次判断. int n = q.size(); round++; while(n>0){ int i = q.front().first; int j = q.front().second; q.pop(); if(i-1>=0 &&grid[i-1][j]==1){//top //污染橘子 fresh++; grid[i-1][j]=2; q.push({i-1,j}); } if(i+1<=M-1 && grid[i+1][j]==1){//down fresh++; grid[i+1][j]=2; q.push({i+1,j}); } if(j-1>=0 && grid[i][j-1]==1){//left fresh++; grid[i][j-1]=2; q.push({i,j-1}); } if(j+1<=N-1 && grid[i][j+1]==1){//right fresh++; grid[i][j+1]=2; q.push({i,j+1}); } n--; } } if(count-fresh!=0){ return -1; } return round; } };
http://www.jsqmd.com/news/327248/

相关文章:

  • 社会网络仿真软件:NodeXL_(15).案例研究:NodeXL在商业分析中的应用
  • 基于微信小程序的智慧社区娱乐服务管理平台_jm78648u
  • 深入解析:中文社交媒体情感分析实战:基于B站评论的机器学习与深度学习对比
  • 基于微信小程序的健康管理系统的设计与实现_387dlt2q
  • 【中大企业选择源码部署商城系统】
  • 基于微信小程序的驾校预约管理系统的小程序_u6pho7j3
  • 基于微信小程序的生猪养殖信息化管理系统_50z6uv9o
  • LangChain 实战:RunnableWithMessageHistory 深度详解
  • 应用层协议HTTP(1) - 教程
  • javaWeb从入门到进阶(SpringBoot原理及bean对象)
  • Flink 弹性伸缩(Elastic Scaling)Adaptive Scheduler、Reactive Mode 与外部资源声明
  • Excel CELL函数深度解析:从基础信息提取到条件格式高阶应用
  • 用 PyTorch 实现 LLM-JEPA:不预测 token,预测嵌入
  • 上海计算机学会2026年1月月赛C++丙组T5 打扫
  • 上海计算机学会2026年1月月赛C++丙组T4 分形十字
  • HarmonyOS 上,App、游戏、PC 能共用架构吗?
  • 没有文档模型,HarmonyOS PC 应用会发生什么?
  • Ai元人文构想:认知共生宣言——迈向人机协作新文明
  • 从注册到跑通项目:体验了飞算JavaAI专业版的“真·无限”开发自由
  • 爬虫-今日头条我的收藏-反爬虫分析(六)
  • 0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
  • 深度学习篇---瓶颈结构残差块
  • 基于微信小程序的医疗器械预定系统_053btbe2
  • Go项目 工具栈选型
  • 基于微信小程序的视频点播系统_7ez85000
  • 基于java的短剧推荐系统设计与实现_c0ql52z2_zl028
  • 5G V2X 仿真利器!SUMO+Python 联合仿真项目,一键搞定车联网场景验证
  • BUU-[CISCN 2019 初赛]Love Math
  • Java性能优化你真的玩明白了吗?
  • 毕设/课设稳过神器!12自由度蜘蛛四足机器人Simscape仿真项目,直接复用拿高分