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

LeetCode994. 腐烂的橘子(2024秋季每日一题 54)

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

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

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

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

示例 1:

在这里插入图片描述

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

示例 2:

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

示例 3:

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

提示:

  • m = = g r i d . l e n g t h m == grid.length m==grid.length
  • n = = g r i d [ i ] . l e n g t h n == grid[i].length n==grid[i].length
  • 1 < = m , n < = 10 1 <= m, n <= 10 1<=m,n<=10
  • g r i d [ i ] [ j ] grid[i][j] grid[i][j] 仅为 0 0 0 1 1 1 2 2 2

思路:bfs(宽度优先遍历)

  • 先将烂橘子所在的坐标都加入队列,并将对应位置时间都置 0
  • 然后通过 bfs 搜索,对搜索到的位置的 4 个方向的新鲜橘子,都标记为烂橘子,然后将时间 + 1,time[a][b] = time[x][y] + 1
  • bfs 搜完之后,遍历所有位置,找到时间最大的烂橘子,如果此时还有新鲜橘子,说明是不能搜到的,返回 -1 即可
class Solution {
public:int time[15][15];queue<pair<int, int>> q;int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int orangesRotting(vector<vector<int>>& grid) {int n = grid.size(), m = grid[0].size();for(int i = 0; i < n; i++)for(int j = 0; j < m; j++){if(grid[i][j] == 2){time[i][j] = 0;q.push({i, j});}}while(q.size()){auto t = q.front();q.pop();for(int i = 0; i < 4; i++){int a = t.first + dx[i], b = t.second + dy[i];if(a < n && a >= 0 && b >= 0 && b < m && grid[a][b] == 1){time[a][b] = time[t.first][t.second] + 1;grid[a][b] = 2;q.push({a, b});}}}int res = 0;for(int i = 0; i < n; i++)for(int j = 0; j < m; j++){if(grid[i][j] == 1){return -1;}else if(grid[i][j] == 2){res = max(res, time[i][j]);}}return res;}
};

http://www.mrgr.cn/news/63726.html

相关文章:

  • 视频文件损坏无法播放怎么办?有什么办法可以修复视频吗?
  • 机器人和智能的进化速度远超预期-ROS-AI-
  • 开源协议类型及长安链开源协议介绍
  • opencv python笔记
  • Qt的信号槽机制学习一
  • 树莓派基本设置--2. raspi-config工具介绍
  • C++ 模版(初阶)
  • Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)
  • 高清解压视频素材从哪儿下载?推荐5个高清推文素材资源网站
  • Excel:vba实现插入图片
  • Pandas CSV学习
  • tensorflow案例4--人脸识别(损失函数选取,调用VGG16模型以及改进写法)
  • 网络:IP分片和组装
  • 拓展:C++程序结构
  • 【系统架构设计师】预测试卷一:论文(包括4篇论文主题对应的写作要点分析)
  • 基于Python爬虫与文本挖掘的网络舆情监控系统【附源码】
  • Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+数据库+源码)
  • 数字IC后端实现之Innovus Place跑完density爆涨案例分析
  • std::bind 的用法
  • 车载总线系列 --- CAN FD简介
  • scrapy爬取名人名言
  • 动态添加的元素点击事件无效
  • sklearn 实现随机森林分类器 - python 实现
  • CSP-S 2023 提高级 第一轮试题(初赛)答案及解析
  • 因为Flock,Flutter又凉一次
  • 《双指针篇》---双指针算法原理