LeetCode 994. 腐烂的橘子(图的BFS)

1. 题目

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

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。

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

在这里插入图片描述

示例 1:
输入:[[2,1,1],[1,1,0],[0,1,1]]
输出:4示例 2:
输入:[[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个正向上。示例 3:
输入:[[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。提示:
1 <= grid.length <= 10
1 <= grid[0].length <= 10
grid[i][j] 仅为 012

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotting-oranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 图的广度优先搜索

  • 先将所有腐烂的位置加入队列,同时记录好的橘子个数
  • 访问过的位置改为-1(visited标记)
  • 对队列里的腐烂位置开始BFS,不等于-1(没访问),且等于1(没烂的)加入队列(同时好橘子减1)
class Solution {
public:int orangesRotting(vector<vector<int>>& grid) {int i, j, k, len, x, y, goodfruits = 0;int m = grid.size(), n = grid[0].size(), minutes = -1;queue<pair<int,int>> q;for(i = 0; i < m; ++i)for(j = 0; j <n; ++j)if(grid[i][j] == 2){q.push({i,j});//烂橘子入队grid[i][j] = -1;//访问过了}else if(grid[i][j] == 1)goodfruits++;//好橘子个数if(goodfruits == 0)return 0;//没有好橘子,直接返回vector<pair<int,int>> dir = {{1,0},{-1,0},{0,1},{0,-1}};while(!q.empty()){len = q.size();while(len--){for(k = 0; k < 4; ++k){x = q.front().first+dir[k].first;y = q.front().second+dir[k].second;if(x>=0 && x<m && y>=0 && y<n && grid[x][y]!= -1 && grid[x][y]==1){	//没访问过 && 是好橘子q.push({x,y});grid[x][y] = -1;//访问了goodfruits--;//烂了}}q.pop();}++minutes;}if(goodfruits)return -1;//还有好橘子,所以不可能全烂掉return minutes;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团酒店直连产品数据一致性演进

美团酒店直连项目自2013年末开始&#xff0c;通过业务上的不断完善和技术上的不断改进&#xff0c;至今已经接入200多家供应商&#xff0c;其中在线酒店3万以上&#xff0c;在线SPU30万以上。经过两年的成长&#xff0c;美团酒店直连平台终于在2015年末发展为国内最大的酒店直连…

直击行业痛点!端侧模型部署的成熟解决方案有了!

深度学习经过多年发展&#xff0c;AI已经深入人心&#xff0c;事实上&#xff0c;在图像、文本领域&#xff0c;AI在多个产业已经落地了诸多应用&#xff0c;我们熟知的自动驾驶、语音助手&#xff0c;背后就大量运用了AI技术。当下&#xff0c;飞桨PaddlePaddle、TensorFlow、…

OpenKG开源系列 | 大规模中文概念图谱OpenConcepts (浙江大学)

OpenKG地址&#xff1a;http://openkg.cn/dataset/openconcept官网&#xff1a;http://openconcepts.openkg.cn&#xff08;提供Dump&#xff09;开放许可协议&#xff1a;CC BY-SA 4.0&#xff08;署名-相同共享)OpenConcepts 介绍OpenConcepts (http://openconcepts.openkg.c…

LeetCode 594. 最长和谐子序列(map)

文章目录1. 题目2. 解题2.1 map两次扫描2.2 map一次扫描1. 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在&#xff0c;给定一个整数数组&#xff0c;你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] …

MTDDL——美团点评分布式数据访问层中间件

2016年Q3季度初&#xff0c;在美团外卖上单2.0项目上线后&#xff0c;商家和商品数量急速增长&#xff0c;预估商品库的容量和写峰值QPS会很快遇到巨大压力。随之而来也会影响线上服务的查询性能、DB&#xff08;数据库&#xff0c;以下统一称DB&#xff09;主从延迟、表变更困…

详解预训练模型、信息抽取、文本生成、知识图谱、对话系统技术

我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源&#xff0c;而是找准资源并高效学习。其次&#xff0c;即便网络上的资源非常多&#xff0c;学习是需要成本的&#xff0c;而且越有深度的内容越难找到好的学习资源。如果一门…

会议交流 | 欢迎注册 CCKS2021 全国知识图谱与语义计算大会!

欢迎注册 CCKS2021 全国知识图谱与语义计算大会知万物过去 谱AI未来2021年8月18日至8月21日 广州http://sigkg.cn/ccks2021主办&#xff1a;中国中文信息学会语言与知识计算专业委员会 承办&#xff1a;广东外语外贸大学注册介绍早期注册 1800元/人2021年7月28日前&…

LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)

1. 题目 给你一个链表的头节点 head&#xff0c;请你编写代码&#xff0c;反复删去链表中由 总和 值为 0 的连续节点组成的序列&#xff0c;直到不存在这样的序列为止。 删除完毕后&#xff0c;请你返回最终结果链表的头节点。 你可以返回任何满足题目要求的答案。 &#x…

移动端性能监控方案Hertz

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多&#xff0c;除去设备硬件和软件的外部因素&#xff0c;其中大部分是开发者错误地使用线程、锁、系统函数、…

刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!

文 | 子龙多模态已经不是一个新鲜的话题&#xff0c;如何在一个模型中融合CV和NLP的信息同时吸引了两个领域的目光&#xff08;CV、NLP的会都能投&#xff09;&#xff0c;但是很容易就能想到&#xff0c;来自图片的视觉特征和来自语料的文本特征来自不同的模型&#xff0c;所隐…

论文浅尝 - ACL2021 | 探讨跨句事件联合抽取问题

转载公众号 | 浙大KG论文题目&#xff1a;MLBiNet: A Cross-Sentence Collective Event Detection Network本文作者&#xff1a;娄东方、廖智霖、邓淑敏、张宁豫、陈华钧&#xff08;浙江大学&#xff09;接收会议&#xff1a;ACL 2021论文链接&#xff1a;https://arxiv.org/p…

LeetCode 343. 整数拆分(DP)

1. 题目 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可以假设 …

python-dotenv解析env文件

python-dotenv解析env文件 最简单和最常见的用法是在应用程序启动时调用load_dotenv&#xff0c;从当前目录或其父目录中的.env文件或指定的路径加载环境变量&#xff0c;然后调用os.getenv提供的与环境相关的方法 .env 文件内容写法 ADMIN_HOST https://uat-rm-gwaaa.cn A…

HDFS NameNode内存详解

前言 《HDFS NameNode内存全景》中&#xff0c;我们从NameNode内部数据结构的视角&#xff0c;对它的内存全景及几个关键数据结构进行了简单解读&#xff0c;并结合实际场景介绍了NameNode可能遇到的问题&#xff0c;还有业界进行横向扩展方面的多种可借鉴解决方案。 事实上&am…

组队瓜分百万奖金池,资深算法工程师带你挑战飞桨论文复现赛!

你是否正在焦虑找不到好的论文&#xff1f;好不容易找到了paper&#xff0c;无法复现出code&#xff1f;缺少科研同行交流&#xff0c;只能独自一人闭门造车&#xff1f;是的&#xff0c;论文复现是要想最快的学习和了解AI领域的方式&#xff0c;复现困境也被叫做“徘徊在 AI 上…

开源开放 | Beyond 预训练语言模型,NLP还需要什么样的知识?

近年来&#xff0c;深度学习技术已广泛应用于NLP领域&#xff0c;但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底&#xff0c;预训练语言模型横空出世&#xff0c;极大缓解了这个问题&#xff0c;通过“超大规模无监督语料上的预训练语言模型相对少量的监督样本进…

Docker把容器打包成镜像并提交到harbor仓库

Docker把容器打包成镜像并提交到harbor仓库 如果你想要保存当前容器的状态&#xff0c;就可以通过commit来提交获得一个镜像&#xff0c;就好我们虚拟机的时候创建快照&#xff0c;想要回滚到某一个版本 一、首先创建要给tomcat 的本地容器&#xff0c;镜像指定tomcat-alpine:8…

LeetCode 139. 单词拆分(DP)

1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1&#xff1a; 输入: s "…

外卖排序系统特征生产框架

背景 图1 外卖排序系统框架 外卖的排序策略是由机器学习模型驱动的&#xff0c;模型迭代效率制约着策略优化效果。如上图所示&#xff0c;在排序系统里&#xff0c;特征是最为基础的部分&#xff1a;有了特征之后&#xff0c;我们离线训练出模型&#xff0c;然后将特征和模型一…

征稿 | “健康知识图谱”投稿通道开启

Data Intelligence正在与语义网国际知名学者Deborah McGuinness以及Oshani Seneviratne等专家一道组织“个人健康知识图谱”专辑。欢迎投稿&#xff01;DI专辑Special Issue on Personal Health Knowledge Graphs This special issue at Data Intelligence Journal seeks origi…