二维数组广度优先遍历-腐烂的苹果

一、问题描述

二、解题思路

此问题通过广度优先遍历来解决,模拟苹果发霉变坏的过程

        1.初始时遍历网格,借助队列来储存所有发霉的苹果,统计好苹果个数

        2.每一分钟队列内发霉苹果都会对周围的苹果起作用(向外部扩散),所以把队列内所有发霉苹果依次弹出,对每个弹出的发霉苹果四周进行判断,传染健康苹果,然后把传染的健康苹果再次加入发霉队列中,这样就模拟了每一分钟的向外扩散过程。

        3.只要还有好苹果并且发霉列表内不为空,就重复执行上述操作(每次重复,时间统计+1)。

        4.当好苹果数量为0时,说明全部扩散完成,返回上述统计的时间;当队列内发霉苹果数量为0,此时健康苹果数量不是0时,意味着好苹果被空格隔离起来了,永远不会变质,则返回-1。

三、代码实现

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param grid int整型ArrayList<ArrayList<>> * @return int整型*/public int rotApple (ArrayList<ArrayList<Integer>> grid) {int useTime=0;int healthyApple=0;//对应上下左右坐标变换int[] dx={0,0,-1,1};int[] dy={1,-1,0,0};int n=grid.size(),m=grid.get(0).size();//设置队列,存储发霉苹果Queue<int[]> appleQue=new LinkedList<>();//统计发霉苹果和健康苹果for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid.get(i).get(j)==2){appleQue.offer(new int[]{i,j});}else if(grid.get(i).get(j)==1){healthyApple++;}}}//从队列中弹出发霉水果,看是否会影响到周围,模拟传播过程,更新健康苹果数量//如果不再产生影响(队列为空),则证明完成传播过程//查看健康苹果个数是否为0,如果不是0则证明永远不会发霉,返回-1//如果是0则返回传播时间useTimewhile(healthyApple>0&&!appleQue.isEmpty()){useTime++;int badSize=appleQue.size();for(int i=0;i<badSize;i++){int[] nowidxArr=appleQue.poll();for(int j=0;j<dx.length;j++){int x=nowidxArr[0]+dx[j];int y=nowidxArr[1]+dy[j];if(x>=0&&x<n&&y>=0&&y<m&&grid.get(x).get(y)==1){grid.get(x).set(y,2);healthyApple--;appleQue.offer(new int[]{x,y});}}}}if(healthyApple==0){return useTime;}else{return -1;}}
}

四、刷题链接

腐烂的苹果_牛客题霸_牛客网

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

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

相关文章

java:aocache的单实例缓存

上一篇博客《java:aocache:基于aspectJ实现的方法缓存工具》介绍了aocache的基本使用&#xff0c; 介绍AoCacheable注解时说过&#xff0c;AoCacheable可以定义在构造方法上&#xff0c;定义在构造方法&#xff0c;该构建方法就成了单实例模式。 也就是说&#xff0c;只要构建…

照片变漫画怎么弄?这5个照片变漫画方法超简单

在艺术和社交融合的现在&#xff0c;将照片转换为漫画风格已经成为一种流行趋势。 无论是为了创造个性化的头像&#xff0c;还是制作有趣的社交媒体帖子&#xff0c;拥有一款能够将照片转换为漫画的软件将极大地丰富你的创意表达。 下面&#xff0c;本文将介绍几款能够实现这…

Day34:LeedCode 56. 合并区间 738.单调递增的数字 968.监控二叉树

56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;int…

数学建模 —— MATLAB中的矩阵(上)

目录 矩阵的创建方法 (1)直接输入法 (2)函数创建法 (3)导入本地文件中的数据 矩阵元素的引用 矩阵元素的修改和删除 矩阵的创建方法 在MATLAB中&#xff0c;矩阵的创建方法主要有三种&#xff0c;分别是&#xff1a;直接输入法、函数创建法和导入本地文件中的数据。 (1)直…

R语言正则表达式

在 R 语言中&#xff0c;正则表达式&#xff08;regex&#xff09;可以用于文本匹配、查找、替换和拆分操作。R 中的正则表达式操作主要使用以下几个函数&#xff1a; grep(): 查找匹配的模式grepl(): 判断是否存在匹配的模式sub(): 替换第一个匹配的模式gsub(): 替换所有匹配…

Ubuntu20.04 64位 安装docker(有问题可评论沟通交流)

1、查看系统版本 cat /proc/version 2、卸载可能存在或未安装成功的docker&#xff08;新系统无需操作&#xff09; apt-get remove docker docker-engine docker-ce docker.io 3、更新apt-get apt-get update 4、安装软件包允许apt-get通过 HTTPS 使用存储库 apt-get install …

Python 爬虫从入门到入狱之路一

实际上爬虫一共就四个主要步骤&#xff1a; 明确目标 (要知道你准备在哪个范围或者网站去搜索)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)处理数据&#xff08;按照我们想要的方式存储和使用&#xff09; 我们在之前写的爬虫程序中&#xff0c;都只是获取…

计算机软件著作权对企业的重要性

软件著作权对于企业的重要性不容忽视&#xff0c;它不仅是企业技术创新的法律保障&#xff0c;也是企业市场竞争力的关键要素。以下是软件著作权对企业重要性的具体阐述&#xff1a; 法律保护技术创新&#xff1a;软件著作权是对软件开发者创作成果的专有权&#xff0c;它可以…

SpringBoot使用RestTemplate发起http请求

目录 GET请求POST请求 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>简易配置 Configuration public class RestTemplateConfig {Beanpublic RestTempl…

亚马逊云(AWS)云服务器在国内的优势

大家好&#xff0c;今天我们来聊聊一个热门话题&#xff1a;为什么亚马逊云&#xff08;AWS&#xff09;云服务器在国内仍有很多人在用&#xff1f;尽管国内有很多优秀的云服务提供商&#xff0c;但AWS依然在中国市场上占据了重要地位。接下来&#xff0c;让我们一起探讨一下其…

Spring Cloud 转向k8s+istio的动机

背景 微服务架构虽然带来诸多优势&#xff0c;但也增加了系统的复杂性&#xff0c;如网络问题、服务发现、容错保护等。微服务SDK&#xff08;如Spring Cloud&#xff09;曾是治理标配&#xff0c;但存在局限。服务网格&#xff08;如Istio&#xff09;提供与开发解耦的治理能…

Ubuntu24.04下安装docker,并pull ubuntu22.04,然后编译安装vpp

一、docker安装说明 解决官方源无法下载的问题 二、使用步骤 1.更新软件包索引 sudo apt update2.安装必要的软件包&#xff0c;以允许apt通过HTTPS使用仓库 sudo apt install apt-transport-https ca-certificates curl software-properties-common3.添加Docker的官方GPG…

CNware快照技术采用双轨服务模式,显著改善虚拟机快照执行时执行后性能下降问题|附技术原理

在数字化时代&#xff0c;虚拟化技术已成为数据中心管理与云计算领域的基石。虚拟化技术允许在单一物理服务器上运行多个独立的虚拟环境&#xff0c;即虚拟机。每个虚拟机都能拥有专属的操作系统、应用程序和配置&#xff0c;彼此隔离&#xff0c;互不影响。然而&#xff0c;如…

易天智能eHR管理平台 CreateUser 任意用户添加漏洞复现

0x01 产品简介 易天智能eHR管理平台是一款功能全面、智能化的人力资源管理软件,旨在帮助企业提高人力资源管理效率和管理水平。该平台通过集成员工信息、薪酬管理、档案人事管理、绩效管理和招聘管理等多个模块,实现了人力资源管理的全面智能化管理。 0x02 漏洞概述 易天智…

权重衰退及代码

一、硬性限制 1、通常不限制偏移b&#xff0c;因为限制不会有区别&#xff1b;seta越小&#xff0c;意味着正则项强 2、优化的是最小化的损失函数 3、后部的限制条件&#xff0c;每个项的平方和小于一个值&#xff1b;极端情况下&#xff0c;当seta等于0&#xff0c;意味着所…

苹果笔记本双系统怎么安装

想要在mac电脑上装双系统&#xff0c;首先需要确认您的电脑是否支持。苹果电脑自带的boot camp工具可以帮助您在mac上安装windows系统&#xff0c;只需按照步骤进行操作即可。另外&#xff0c;您也可以使用虚拟机软件&#xff0c;如parallels desktop或vmware fusion&#xff0…

统信UOS 安装二级制版MySQL8.4

统信UOS 安装二级制版MySQL8.4 建立MySQL用户和用户组 sudo groupadd mysqlsudo useradd -r -g mysql -s /bin/false mysql下载MySQL安装包 wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz解压缩MySQL安装包 sudo tar -xvf m…

在Ubuntu22.04 使用stable-diffusion-webui 秋叶整合包

背景 众所周知&#xff0c;赛博菩萨已经发布了windows下的整合包&#xff0c;开箱即用&#xff0c;且集成度较高。 那我为啥非要在Ubuntu下使用呢&#xff1f; 当然是因为主力机就是Ubuntu系统啦。而且涉及到sd webui API 的调用&#xff0c;在Ubuntu 下调试更加方便一点。 那…

ZS-20H型水泥胶砂振实台

一、 概述 水泥胶砂振实台是为我国水泥胶砂强度检验方法等同采ISO679国际标准而设计。该仪器符合 JC/T 682《水泥胶砂试体成型振实台》要求&#xff0c;适用于水泥强度检验所用试样的制备。 二、 技术数据 1、台盘&#xff08;包括臂杆、压模框等&#xff09;的总质量 13.75 …

Redis 面试题完整指南:深度解析基础、进阶与高级功能

基础知识 1. 什么是Redis&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、基于内存的数据结构存储系统&#xff0c;既可以用作数据库、缓存&#xff0c;也可以用作消息中间件。它支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、…