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

LeetCode 994. 腐烂的橘子

 题目描述  

在给定的 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 。

解法

1.多源BFS腐蚀法

解题思路

       首先将腐烂的橘子装在一个栈中,fresh记录新鲜橘子的个数,后续会用到fresh,定义一个方位坐标容器,后续用于遍历,定义标志位rotten用来标记这一轮还有没有新鲜橘子变腐烂,如果有时间min++。每次处理所有的腐烂橘子(遍历栈),然后处理每个腐烂橘子四周的橘子,如果坐标满足条件且是新鲜的,则变腐烂,进栈,fresh--,rotten生效。最后返回用到fresh,它用于判断一开始就全为新鲜橘子这种情况返回-1。

class Solution {
public:int orangesRotting(vector<vector<int>>& grid) {int min = 0,fresh = 0;queue<pair<int,int>> q; //装腐烂的橘子vector<pair<int,int>> dex = {{-1,0},{0, -1},{1,0},{0,1}};for(int i = 0;i < grid.size();i ++){for(int j = 0;j < grid[0].size();j ++){if(grid[i][j] == 1) fresh ++;if(grid[i][j] == 2) q.push({i,j});}}bool rotten;while(!q.empty()){rotten = false;int n =  q.size();for(int i = 0;i < n;i ++){auto x = q.front();q.pop();for(auto d : dex){int i = x.first + d.first;int j = x.second + d.second;if(i >= 0 && i < grid.size() && j >= 0 && j < grid[0].size() && grid[i][j] == 1){grid[i][j] = 2;fresh --;q.push({i,j});rotten = true;}}}if(rotten) min ++;}return fresh == 0 ? min : -1;}
};

        时间复杂度O(MN),空间复杂度O(MN)

http://www.dtcms.com/a/487155.html

相关文章:

  • 网站设计师需要什么知识与技能咸宁网站建设哪家专业
  • Python爬取百度地图-前端直接获取
  • thumos14数据集学习
  • 持续集成/持续部署(CI/CD)
  • HTTPS 的加密过程~
  • 用服务器ip做网站不配置iis做网站
  • 成都企业网站建设哪家好做网站模板链接放哪里
  • 网站手机端做app开发工具网站开发图标
  • 华为OD-21届考研-Java面经
  • PyTorch 实现多种 CNN 模型并采用集成方法提升 CIFAR-10 分类性能
  • 网站建设常用软件宣传链接用什么软件
  • 合肥响应式网站开发方案wordpress 本地 搭建网站
  • 国内做游戏破解的网站专门做2手手机的网站
  • 深度学习进阶(二)——视觉与语言的融合:多模态模型的架构演化
  • html做的旅游网站wordpress按作者分类
  • Jmeter 线程组、定时器、监听器、后置处理器常用配置说明
  • Jmeter分布式集群搭建与使用
  • 【Pytorch】MLP反向传播
  • 【pytorch学习打卡挑战】day2 Pytorch张量运算API
  • 【GESP】C++三级练习 luogu-P1597 语句解析-系列题目1
  • 宏杰zkeys网站模板浙江省工程建设监理管理协会网站
  • kotlin中MutableStateFlow和MutableSharedFlow的区别是什么?
  • 工作室主题网站网站备案被注销的原因
  • 网站改版建议常州城乡建设学校网站
  • 简洁文章网站模板下载wordpress数据改网址
  • 如何判断页面为全屏页面还是浏览器内部页面
  • 网站快照出现两个重庆市建设工程信息网站诚信分
  • 关键词优化 vs 数据驱动:搜索引擎排名谁更有效?实测参考
  • 企业网站开发外包公司海外社交网络推广
  • springboot美食推荐商城的设计与实现