leecode热题100---994:腐烂的橘子

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

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。
每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。

返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。
在这里插入图片描述
C++:

//一般当一个对象有多个属性的时候,我们会用结构体stuct写多个属性,而当只有两个属性的时候,就可以使用pair.
//pair<int, int> P;        //对象P有两个属性,都是int类型// 思路:bfs 广度优先搜索 首先将烂橘子坐标全放到队列中去。进而广度优先搜索,进行判定。可以看代码注释。class Solution
{
public:int badorange(vector<vector<int>>& gride){// bfs 广度优先,将腐烂橘子的坐标放到队列中int m = gride.size();int n = gride[0].size();queue<pair<int, int>>q; // 存放腐烂橘子的坐标bool flag = false;      // 记录是否有好橘子,若无则直接返回0int goodnums = 0;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (gride[i][j] == 2){q.push({ i, j });}else if (gride[i][j] == 1){flag = true;goodnums++;      // 好橘子的数量}}}if (!flag)  return 0;int time = 0;while (!q.empty()){int qLen = q.size();flag = false;   // 记录本回合是否有好橘子变烂,若无则可直接返回,时间不进行+1for (int i = 0; i < qLen; i++){[x, y] = q.front();q.pop();// 判断腐烂橘子的上下左右是否有新鲜橘子if (x > 0 && gride[x - 1][y] == 1){flag = true;gride[x - 1][y] = 2;	// 新鲜橘子变烂goodnums--;				// 新鲜橘子-1q.push({ x - 1, y });	// 新的烂橘子坐标}if (x < m - 1 && gride[x + 1][y] == 1){flag = true;gride[x + 1][y] = 2;goodnums--;q.push({ x + 1, y });}if (y > 0 && gride[x][y - 1] == 1){flage = true;gride[x][y - 1] = 2;goodnums--;q.push({ x, y - 1 });}if (y < n - 1 && gride[x][y - 1] == 1){flage = true;gride[x][y - 1] = 2;goodnums--;q.push({ x, y - 1 });}}if (flag = true){time++;}elsebreak;	// 本回合无新鲜橘子变烂,直接返回}if (goodnums == 0){return time;}elsereturn -1;}
};

python:

思路

# 1、先遍历一次数组获取腐烂橘子的位置,以及新鲜橘子的位置分别存在mold和fresh中
# 2、此时若没有mold且没有fresh则证明为空,返回0;若仅没有mold则证明永远不会腐烂,返回-1
# 3、接着遍历mold中的所有坐标,check他们的上下左右,如果在fresh中则该坐标需要从fresh中取出,并且加入mold。
# 4、一轮遍历完成让count++,如果mold此时为空则可以停止,mold中仍有坐标则循环3中的遍历
# 5、返回时检查fresh,如果fresh为空则说明所有橘子已经腐烂,返回count值即可,仍有fresh说明永远有橘子无法腐烂class Solution:def orangesRotting(self, grid):maxi = len(grid)maxj = len(grid[0])count = -1mold = []tmp = []fresh = set()# 遍历grid获取新鲜橘子坐标fresh,腐烂坐标moldfor i in range(maxi):for j in range(maxj):if grid[i][j] == 1:fresh.add((i,j))elif grid[i][j] == 2:mold.append([i,j])# 此时若没有mold且没有fresh则证明为空,返回0;若仅没有mold则证明永远不会腐烂,返回-1if not mold and not fresh: return 0if not mold: return -1# 腐烂橘子的函数def check(i, j):if (i,j) in fresh:fresh.remove((i,j))tmp.append((i,j))# 每轮循环检查mold中坐标的上下左右是否可以腐烂while mold != []:for x in mold:check(x[0]-1,x[1])check(x[0]+1,x[1])check(x[0],x[1]-1)check(x[0],x[1]+1)mold = tmptmp = []count += 1# 如果fresh为空则说明所有橘子已经腐烂,返回count值即可,仍有fresh说明永远有橘子无法腐烂if len(fresh) == 0:return countelse: return -1

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

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

相关文章

C++之第九课

课程列表 今天&#xff0c;我们要学习一种结构&#xff1a;循环结构。 循环的方法有3种。 今天先将第1种for学了&#xff1a; int a;//循环变量 int b; for(a1;a<10;a){//像if那样“打包”cout<<a<<" ";b; } 当然&#xff0c;也可以这样写&#…

【MySQL精通之路】InnoDB(5)-内存结构

总目录&#xff1a; 【MySQL精通之路】InnoDB存储引擎-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】InnoDB(4)-架构图-CSDN博客 目录 ​编辑 1 缓存池&#xff08;Buffer Pool&#xff09; 1.1 缓存池LRU算法 1.2 缓存区配置 1.3 使用InnoDB标准监视器监视缓存池 …

SSRF服务端请求伪造漏洞原理与修复及靶场实践

SSRF服务端请求伪造漏洞原理与修复及靶场实践 SSRF漏洞原理与检测 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请求伪造&#xff09;漏洞是一种因为服务端提供了远程访问服务&#xff0c;而并未对请求目标进行限制或限制不严格而引起的安全漏洞&#x…

Java Apache Jexl规则引擎初体验

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、模板引擎的选择&#xff1f;二、什么是JEXL规则引擎&#xff1f;优点缺点 三、其他规则引擎四、示例1.引入依赖2.方法示例3、代码解释4、效果![import java…

VMware虚拟机Ubuntu 22.04.4 LTS系统 NAT网络设置异常解决

现象&#xff1a; 近日&#xff0c;一直工作正常的虚拟机莫名出现网络无法连接的情况。 参考网上的各种教程&#xff0c;终于解决问题。 如遇到类似情况的&#xff0c;可以尝试这个方式&#xff0c;看能否解决问题。 网络连接&#xff1a;采用NAT模式 异常&#xff1a;网络图标…

C++数据结构——哈希表

前言&#xff1a;本篇文章将继续进行C数据结构的讲解——哈希表。 目录 一.哈希表概念 二.哈希函数 1.除留取余法 三.哈希冲突 1.闭散列 线性探测 &#xff08;1&#xff09;插入 &#xff08;2&#xff09;删除 2. 开散列 开散列概念 四.闭散列哈希表 1.基本框架 …

场内期权怎么开户?佣金手续费最低是多少?

今天期权懂带你了解场内期权怎么开户&#xff1f;佣金手续费最低是多少&#xff1f;我国的首个场内期权是50ETF期权&#xff0c;随着投资者对期权产品日渐熟悉&#xff0c;投资者参与数量与交易量稳步增长。 场内期权怎么开户&#xff1f; 满足资金要求&#xff1a;根据监管要…

自动打卡脚本

奕辅导自动打卡脚本 打卡脚本&#xff0c;使用前需手动打卡一次并需要抓包&#xff0c;在其中找到相关的token。 # -*- encoding:utf-8 -*-import requests import jsonpunch_in_data {"questionnairePublishEntityId": "1001640744275339000980000000001&qu…

MyBatis:Parameter Maps collection does not contain value for 报错解决收录

MyBatis&#xff1a;Parameter Maps collection does not contain value for 报错问题解决收录 1.报错收录 后端测试时偶然遇到的用mybatis生成好的mapper文件&#xff0c;报Result Maps collection does not contain value…的错误 2.报错分析 java.lang.ILledalAraumentEx…

必应bing国内广告开户首充和开户费是多少?

微软必应Bing作为国内领先的搜索引擎之一&#xff0c;其广告平台凭借其精准的投放、高效的数据分析和广泛的用户覆盖&#xff0c;已成为众多企业的首选。 根据最新政策&#xff0c;2024年必应Bing国内广告开户预充值金额设定为1万元人民币起。这一调整旨在确保广告主在账户初始…

【嵌入式DIY实例】-OLED显示DHT22传感器数据

OLED显示DHT22传感器数据 1、应用实例介绍 本次实例将演示如何在OLED中显示DHT22温度湿度传感器的数据。实例主要分两步来完成: DHT22传感器驱动,采集温度和湿度OLED驱动,显示采集到的温度值和湿度值。在前面的文章中,对OLED的应用和驱动做了介绍,请参考: ESP8266-Ardu…

1.Nginx上配置 HTTPS

1.安装 Nginx&#xff1a; 如果还没有安装 Nginx&#xff0c;可以使用包管理工具安装。例如&#xff0c;在 Ubuntu 上&#xff1a; sudo apt update sudo apt install nginx2.上传证书和私钥文件&#xff1a; 将你的证书文件和私钥文件上传到服务器上的某个目录&#xff0c;…

VBA宏指令写的方法突然不能用了

背景:项目组有个自动化测试项目,实在excel中利用VBA开发的;时间比较久远,我前面的哥们走后,这个软件一直在用,最近系统不知道是不是更新的缘故;有些代码除了问题; 先上源码: Dim Conn As Object, Rst As Object Dim sqlStr$ Dim str_start_SN$, str2$ str_start_SN …

python 线性回归模型

教材链接-3.2. 线性回归的从零开始实现 c实现 该博客仅用于记录一下自己的代码&#xff0c;可与c实现作为对照 from d2l import torch as d2l import torch import random # nn是神经网络的缩写 from torch import nn from torch.utils import data# 加载训练数据 # 加载训…

什么是网关,网关有哪些作用?

网关(Gateway)是在计算机网络中用于连接两个独立的网络的设备&#xff0c;它能够在两个不同协议的网络之间传递数据。在互联网中&#xff0c;网关是一个可以连接不同协议的网络的设备&#xff0c;比如说可以连接局域网和互联网&#xff0c;它可以把局域网 的内部网络地址转换成…

论文阅读--GLIP

把detection和phrase ground(对于给定的sentence&#xff0c;要定位其中提到的全部物体)这两个任务合起来变成统一框架&#xff0c;从而扩展数据来源&#xff0c;因为文本图像对的数据还是很好收集的 目标检测的loss是分类loss定位loss&#xff0c;它与phrase ground的定位los…

爬虫学习--11.MySQL数据库的基本操作(上)

MySQL数据库的基本操作 创建数据库 我们可以在登陆 MySQL 服务后&#xff0c;使用命令创建数据库&#xff0c;语法如下: CREATE DATABASE 数据库名; 显示所有的数据库 show databases; 删除数据库 使用普通用户登陆 MySQL 服务器&#xff0c;你可能需要特定的权限来创建或者删…

Docker部署Minio小记

概述 因为工作需要搭建对象存储的测试环境&#xff0c;故而使用Docker部署Minio&#xff0c;测试通过博文记录用以备忘 步骤 拉取镜像 docker pull minio/minio启动容器 docker run -p 9000:9000 -p 9090:9090 \--name minio \-d --restartalways \-e "MINIO_ACCESS_K…

内脏油脂是什么?如何减掉?

真想减的人&#xff0c;减胖是很容易的&#xff0c;但想要形体美又健康&#xff0c;还是得从减内脏油脂开始&#xff0c;那么&#xff0c;问题来了&#xff0c;什么是内脏油脂&#xff1f; 油脂它分部于身体的各个角落&#xff0c;四肢、腹部、腰、臀部、脸、脖子...等&#xf…

VUE3+TS+elementplus创建table,纯前端的table

一、前言 开始学习前端&#xff0c;直接从VUE3开始&#xff0c;从简单的创建表格开始。因为自己不是专业的程序员&#xff0c;编程主要是为了辅助自己的工作&#xff0c;提高工作效率&#xff0c;VUE的基础知识并不牢固&#xff0c;主要是为了快速上手&#xff0c;能够做出一些…