【刷题1】LeetCode 994. 腐烂的橘子 java题解
tag:图论 广度优先搜索
https://leetcode.cn/problems/rotting-oranges/description/?envType=study-plan-v2&envId=top-100-liked
使用广度优先搜索,搜索步数就是分钟数,等到所有橘子都腐烂后,各个橘子腐烂的最长分钟数就是全部都烂的最小分钟数
class Solution {public int orangesRotting(int[][] grid) {int m=grid.length;int n=grid[0].length;int[][] deep=new int[m][n];//烂的时候用了几分钟LinkedList<Integer> list=new LinkedList<>();//bfs的队列for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]==2){//烂橘子deep[i][j]=0;//0分钟就烂,一开始就是烂int index=i*n+j;//一维下标list.addLast(index);//存储现有烂的}}}int res=0;int[][] direction={{0,1},{0,-1},{1,0},{-1,0}};//四个方向while(list.size()!=0){int before=list.removeFirst();//取出一个烂橘子,腐蚀他周围的四个int beforei=before/n;//iint beforej=before%n;//jfor(int d=0;d<4;d++){int nexti=beforei+direction[d][0];int nextj=beforej+direction[d][1];//检查越界;是否是可以被腐蚀的新鲜橘子if(nexti>=0&&nextj>=0&&nexti<m&&nextj<n&&grid[nexti][nextj]==1){grid[nexti][nextj]=2;//变烂deep[nexti][nextj]=deep[beforei][beforej]+1;//保存分钟数res=Math.max(res,deep[nexti][nextj]);//最大分钟数更新list.addLast(nexti*n+nextj);//将这个烂橘子加入bfs队列}}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]==1)//还存在新鲜橘子return -1;}}return res;}
}
相关文章:
【刷题1】LeetCode 994. 腐烂的橘子 java题解
tag:图论 广度优先搜索 https://leetcode.cn/problems/rotting-oranges/description/?envTypestudy-plan-v2&envIdtop-100-liked 使用广度优先搜索,搜索步数就是分钟数,等到所有橘子都腐烂后,各个橘子腐烂的最长分钟数就是全部都烂的最小…...
Java的运行机制与Java开发环境的搭建
1.编译和执行 首先通过文本编辑器编写源程序(后缀为.java),再利用编译器编译成字节码文件(后缀为.class),最后利用虚拟机也叫解释器解释执行。 2.JVM、JRE和JDK的区别 简单来说, ①JVM 提供了运行 Java 程…...
【Java】面向对象之多态超级详解!!
文章目录 前言一、多态1.1 多态的概念1.2 多态的实现条件1.3 重写1.3.1方法重写的规则1.3.2重写和重载的区别 1.4 向上转型和向下转型1.4.1向上转型1.4.2向下转型 1.5 多态的优缺点1.5.1 使用多态的好处1.5.2 使用多态的缺陷 结语 前言 为了深入了解JAVA的面向对象的特性&…...
react 路由的基本原理及实现
1. react 路由原理 不同路径渲染不同的组件 有两种实现方式 ● HasRouter 利用hash实现路由切换 ● BrowserRouter 实现h5 API实现路由切换 1. 1 HasRouter 利用hash 实现路由切换 1.2 BrowserRouter 利用h5 Api实现路由的切换 1.2.1 history HTML5规范给我们提供了一个…...
[极客大挑战 2019]LoveSQL1 题目分析与详解
一、题目简介: 二、通关思路: 1、首先查看页面源代码: 我们发现可以使用工具sqlmap来拿到flag,我们先尝试手动注入。 2、 打开靶机,映入眼帘的是登录界面,首先尝试万能密码能否破解。 username: 1 or 11…...
探索RedisJSON:将JSON数据力量带入Redis世界
探索RedisJSON:将JSON数据力量带入Redis世界 当我们谈论数据存储和查询时,Redis和JSON都是无法忽视的重要角色。Redis以其高效的键值存储、快速的读/写速度、以及丰富的数据结构赢得了开发者的喜爱。而JSON,作为一种轻量级的数据交换格式&am…...
【精通Spring】基于注解管理Bean
个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…...
Python爬虫——Urllib库-3
目录 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 获取豆瓣电影前十页的数据 ajax的post请求 总结 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 首先可以在浏览器找到发送数据的接口 那么我们的url就可以在header中找到了 再加上UA这个header 进行请…...
JAVA工程师面试专题-《消息队列》篇
1、为什么使用消息队列? 解耦、异步、削峰 2、消息队列有什么优缺点 优点:解耦、异步、削峰 缺点:系统可用性降低、系统复杂度提高、一致性问题 3、如何进⾏消息队列选型? Kafka: ○ 优点&…...
Unity3d Shader篇(十一)— 遮罩纹理
文章目录 前言一、什么是遮罩纹理?1. 遮罩纹理工作原理2. 遮罩纹理优缺点优点:缺点: 3. 遮罩纹理图 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三、效果四、总结 前言 在…...
测试开发(6)软件测试教程——自动化测试selenium(自动化测试介绍、如何实施、Selenium介绍 、Selenium相关的API)
接上次博客:测试开发(5)测试分类标准 :按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分-CSDN博客 目录 什么是自动化测试 自动化测试介绍…...
【flink】Rocksdb TTL状态全量快照持续递增
flink作业中的MapState开启了TTL,并且使用rocksdb作为状态后端配置了全量快照方式(同时启用全量快照清理),希望能维持一个平稳的运行状态,但是经观察后发现效果不达预期,不仅checkpoint size持续缓慢递增&a…...
[C++] 统计程序耗时
一、简介 本文介绍了两种在C代码中统计耗时的方法,第一种使用<time.h>头文件中的clock()函数记录时间戳,统计程序耗时。第二种使用<chrono>头文件中的std::chrono::high_resolution_clock()::now()函数,后者可以方便地统计不同时…...
Redis是单线程还是多线程?
单线程为什么这么快的原因: 后来引入了多线程是因为:...
【MySQL】MySQL数据管理——DDL数据操作语言(数据表)
目录 创建数据表语法列类型字段属性SQL示例创建学生表 查看表和查看表的定义表类型设置表的类型 面试题:MyISAM和InnoDB的区别设置表的字符集删除表语法示例 修改表修改表名语法示例 添加字段语法示例 修改字段语法示例 删除字段语法示例 数据完整性实体完整性域完整…...
Qt使用QSettings类来读写ini
在Qt中,可以使用QSettings类来读写ini文件。QSettings提供了一个简单的接口,用于访问和修改ini文件中的键值对。 下面是使用QSettings类来写入ini文件的示例代码: #include <QCoreApplication> #include <QSettings>int main(i…...
嵌入式软件bug从哪里来,到哪里去
摘要:软件从来不是一次就能完美的,需要以包容的眼光看待它的残缺。那问题究竟为何产生,如何去除呢? 1、软件问题从哪来 软件缺陷问题千千万万,主要是需求、实现、和运行环境三方面。 1.1 需求描述偏差 客户角度的描…...
去掉WordPress网页图片默认链接功能
既然是wordpress自动添加的,那么我们在上传图片到wordpress后台多媒体的时候,就可以手动改变链接指向或者删除掉,问题是每次都要这么做很麻烦,更别说有忘记的时候。一次性解决这个问题有两种方法,一种是No Image Link插…...
UE学习笔记--解决滚轮无法放大蓝图、Panel等
我们发现有时候创建蓝图之后,右上角的缩放是1:1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动,都没有效果。 好像最大只能 1:1. 那是因为 UE 做了限制。如果希望继续放大,我们可以按住 Ctrl 再去…...
GO结构体
1. 结构体 Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性&am…...
Windows 11下ROS2 Humble与PyCharm无缝集成实战(避坑指南+完整配置流程)
Windows 11下ROS2 Humble与PyCharm无缝集成实战(避坑指南完整配置流程) 在机器人操作系统(ROS)生态中,Windows平台的支持一直是个挑战。随着ROS2 Humble版本的发布,微软与开源社区的深度合作为Windows开发者…...
基于卷积神经网络的Pixel Dream Workshop风格迁移原理与调参实战
基于卷积神经网络的Pixel Dream Workshop风格迁移原理与调参实战 1. 风格迁移的艺术与科学 当梵高的《星空》遇上现代都市照片,当毕加索的立体主义风格融入你的自拍,这就是风格迁移技术带来的魔法。Pixel Dream Workshop作为一款基于卷积神经网络(CNN)…...
awesome-ml Power BI资源:数据可视化的终极指南
awesome-ml Power BI资源:数据可视化的终极指南 【免费下载链接】awesome-ml Curated list of useful LLM / Analytics / Datascience resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-ml awesome-ml项目中的Power BI资源为数据可视化提供了…...
BilibiliDown:5分钟免费下载B站视频的终极完整指南
BilibiliDown:5分钟免费下载B站视频的终极完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/B…...
RedmiBook Pro15 2023锐龙版Linux调优指南:从内核编译到amd-pstate睿频实战
1. 开箱即用的Linux调优指南 RedmiBook Pro15 2023锐龙版搭载了AMD Ryzen 7 7840HS这颗性能强劲的APU,但在Linux环境下想要充分发挥其潜力,需要一些特殊的调优技巧。我最近刚入手这台笔记本,在Ubuntu 22.04上折腾了一周,总结出这套…...
Mac外接显示器必看:从排列到亮度调节的完整避坑指南
Mac外接显示器完全指南:从基础设置到高阶调校 开篇:为什么你的Mac需要外接显示器? 作为一名长期使用MacBook Pro的深度用户,我清楚地记得第一次连接外接显示器时的困惑与惊喜。那块13英寸的Retina屏幕虽然精致,但在处理…...
别再只用柱状图了!用Origin玩转‘柱状+点线’组合图,轻松应对论文审稿人的图表挑剔
科研图表升级指南:用Origin打造兼具数据对比与趋势分析的组合图表 在学术论文写作中,图表是研究成果最直观的呈现方式。许多研究者习惯使用单一的柱状图展示数据,但当审稿人要求同时体现数值比较和时间趋势时,这种简单图表就显得力…...
OBS智能背景移除插件:3步实现专业级无绿幕抠图效果
OBS智能背景移除插件:3步实现专业级无绿幕抠图效果 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://git…...
Qwen3-4B模型在STM32嵌入式开发中的应用:代码注释生成与调试日志分析
Qwen3-4B模型在STM32嵌入式开发中的应用:代码注释生成与调试日志分析 如果你是一位STM32开发者,下面这个场景你一定不陌生:面对一段几个月前自己写的、涉及复杂定时器配置或CAN总线通信的代码,你皱着眉头看了半天,愣是…...
别再死磕A*了!用MATLAB从零实现RRT*路径规划(附完整代码与避坑指南)
从A到RRT:MATLAB实战高维空间路径规划全解析 当传统栅格搜索算法在机器人关节空间或复杂三维环境中捉襟见肘时,概率采样方法正成为新一代路径规划的核心利器。本文将带您深入理解RRT算法相对于A的突破性优势,并通过MATLAB完整实现过程&#…...
