从零学算法994

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 。
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 10
grid[i][j] 仅为 0、1 或 2

  • BFS:由于需要所有烂橘子同时开始腐烂周围的橘子,所以使用 bfs。将烂橘子作为起点加入队列,不断寻找四周的新鲜橘子,找到后就将其更新为烂橘子加入队列,遍历了几层就相当于全部腐烂需要几分钟
  •   int[][] dirs = new int[][]{{0,1}, {0,-1}, {1,0}, {-1,0}};public int orangesRotting(int[][] grid) {int m = grid.length, n = grid[0].length;Queue<int[]> q = new LinkedList<>();// 初始化烂橘子入队for(int i = 0; i < m; i++){for(int j = 0; j < n; j++)if(grid[i][j] == 2)q.offer(new int[]{i, j});}int res = 0;while(!q.isEmpty()){for(int k = q.size(); k > 0; k--){int[] idx = q.poll();for(int[] dir : dirs){int x = idx[0] + dir[0], y = idx[1] + dir[1];if(x < 0 || y < 0 || x >= m || y >= n)continue;if(grid[x][y] != 1)continue;q.offer(new int[]{x, y});grid[x][y] = 2;}}// 只有当有新鲜橘子入队后才说明有橘子被腐烂了// 否则最开始只有烂橘子的时候也会增加 res 了if(!q.isEmpty())res++;}// 如果还有剩余的新鲜橘子说明无法全部腐烂for(int[] g : grid){for(int x : g)if(x == 1)return -1;}return res;}
    

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

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

相关文章

微信小程序中的数据可视化组件封装艺术【附代码】

微信小程序中的数据可视化组件封装艺术 一、数据可视化的魅力与重要性数据可视化简述为什么要在小程序中封装数据可视化组件 二、微信小程序数据可视化基础小程序中的绘图工具&#xff1a;Canvas 三、实战&#xff1a;封装一个简易折线图组件设计思路组件结构&#xff08;line-…

java mybatis配置

MyBatis是一种支持自定义SQL、存储过程和高级映射的持久层框架。下面是一个简单的Java MyBatis配置示例&#xff1a; 首先&#xff0c;需要添加MyBatis的依赖到项目的pom.xml文件中&#xff1a; <dependency><groupId>org.mybatis</groupId><artifactId…

Python3 笔记:顺序结构

三种程序执行结构&#xff1a;顺序结构、选择结构和循环结构。 这三种结构对应的是&#xff1a;顺序执行所有的语句、选择执行部分语句和循环执行部分语句。 顺序结构是程序最基本的结构。就是程序按照语句顺序&#xff0c;从上到下依次执行各条语句。 例如&#xff1a; nu…

【运维实践项目|003】:Nginx集群化运维升级项目

项目名称 项目简称或代号&#xff1a;SUN项目&#xff08;这个可以自己随便编一个&#xff0c;每个公司的每个项目简称或代号都是内部任意起名的&#xff0c;显得专业一点&#xff0c;一般是项目关键词的首拼&#xff0c;比如这个CSUN是&#xff1a;ScaleUp Nginx&#xff09;…

一道dp错题

dis(a,b)就是两点之间的距离公式 那么这道题该怎么解呢,.先看数据范围x,y<1e4,so,18个点两点之间距离最大18*1e4*sqrt(2)<2^18,所以如果跳过的点大于18个点,那么显然一个区间内最多不会跳跃超过17个点 现在我们想知道前i个点跳跃几次在哪跳跃能够达到最小花费,不妨设跳…

【OceanBase诊断调优】—— 转储错误(错误代码 4138/ORA-01555)

当读事务很长时&#xff0c;租户进行转储会报 4138/ORA-01555 错误。本文介绍该错误的处理方法。 适用版本 OceanBase 数据库 V2.X 及以后的版本 问题现象 当读事务很长&#xff0c;租户进行转储时会出现以下错误。 Oracle 租户&#xff1a; ORA-01555&#xff1a;snapsho…

Keil调用跟踪

调试时程序卡在一个位置&#xff0c;恰巧这个函数被很多地方调用&#xff0c;需要知道上一步在哪。 程序暂停后&#xff0c; 查看调用堆栈&#xff0c;点击Keil菜单栏中的“View”&#xff0c;然后选择“Call Stack”&#xff08;调用堆栈&#xff09;选项。这将显示当前的调用…

市场活动系统搭建

精细差异化运营在今天的企业越来越普遍&#xff0c;运营驱动占据了业务经营的主导地位。各种营销活动&#xff0c;帮助我们差异化运营、激发潜在客户、带动连带消费、增加销售额度、提升用户增长、实现品牌宣传。 天猫、京东上有各种各样的促销活动。如&#xff1a;满减、满返、…

算法day04

第一题 &#xff1a; 209. 长度最小的子数组 有上题可知&#xff0c;我们会采用双指针和单调性的思路来解决 我们本题采用左右双指针从数组的0位置同向前进&#xff0c;所以将此类模型称为滑块&#xff1b; 步骤思路如下&#xff1a; 步骤一&#xff1a; 定义所有双指针都指向…

Prompt提示词的技巧

Prompt提示词的技巧 要让GPT类模型产生最符合我们需求的输出&#xff0c;我们需要精心设计和调整输入的提示词&#xff08;Prompt&#xff09;。 1、明确性&#xff1a; 确保你的提示词清晰、具体。GPT类模型会根据你给出的信息来生成文本&#xff0c;因此&#xff0c;提供详…

【实践】使用vscode来debug go程序的尝鲜

配置 首先&#xff0c;当然得配置好vscode 的go环境&#xff0c; 装个go插件就基本满足了 配置 launch.json, 可以配置多个环境的程序启动参数&#xff08;很友好&#xff09; {"version": "0.2.0","configurations": [{"name": &…

ArrayList与LinkedList的区别

一、背景与现状 在Java编程中&#xff0c;ArrayList和LinkedList都是实现List接口的重要类&#xff0c;用于存储和操作动态大小的元素集合。两者在Java集合框架中占据了核心地位&#xff0c;并被广泛应用于各种软件项目中。然而&#xff0c;尽管它们都提供了类似的功能&#x…

海外客户开发渠道有哪些

海外客户开发是一个多元化的过程&#xff0c;涉及线上与线下多个渠道。以下是一些有效的海外客户开发渠道&#xff1a; 平台电商&#xff1a; 利用国际B2B电商平台&#xff0c;如阿里巴巴国际站、 Globalsources、Made-in-China等&#xff0c;这些平台拥有庞大的国际买家流量&a…

STM32学习和实践笔记(27):USART串口通信实验程序

本实验所要实现的功能是&#xff1a;STM32F1通过USART1实现与PC机对话&#xff0c;STM32F1的USART1收到PC机发来的数据后原封不动的返回给PC机显示。同时使用D1指示灯不断闪烁提示系统正常运行。程序框架如下&#xff1a; &#xff08;1&#xff09;初始化USART1&#xff0c;并…

linux 开发常用命令

一、查看 相关服务 1.查看 数据库 相关服务 这里以mysql 和 redis 为例 &#xff08;1&#xff09;使用 ps 命令 执行命令会列出&#xff0c;“mysql”、“redis”名称的进程 ps aux | grep redis 示例&#xff1a; rootspray:~# ps aux | grep mysql mysql 1609816 0.…

Flutter 中的 FilterChip 小部件:全面指南

Flutter 中的 FilterChip 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;FilterChip 是一种特殊类型的 Chip&#xff0c;用于呈现过滤选项。用户可以通过点击 FilterChip 来应用相应的过滤条件&#xff0c;这在需要对列表或集合进行筛选的场景中非常有用&#xff0c;如…

51单片机实现俄罗斯方块游戏编程

一、设计要求 &#xff08;1&#xff09;利用51单片机&#xff0c;设计一款俄罗斯方块游戏&#xff0c;完成硬件电路的开发和程序的编写调试&#xff1b; &#xff08;2&#xff09;采用LCD12864液晶作为游戏运行界面&#xff1b; &#xff08;3&#xff09;利用按键输入灵活…

Spring Boot集成dubbo快速入门Demo

1.什么是dubbo&#xff1f; Apache Dubbo 是一款微服务开发框架&#xff0c;它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着&#xff0c;使用 Dubbo 开发的微服务&#xff0c;将具备相互之间的远程发现与通信能力&#xff0c; 同时利用 Dubbo 提供的丰富服务治理能力…

HTML飘落的花瓣

目录 写在前面 HTML​​​​​​​简介 完整代码 代码分析 系列推荐 写在最后 写在前面 本期小编给大家推荐HTML实现的飘落的花瓣&#xff0c;无需安装软件&#xff0c;直接下载即可打开~ HTML​​​​​​​简介 HTML&#xff08;Hypertext Markup Language&#xff…

探索Playwright:Python下的Web自动化测试革命

在如今这个互联网技术迅速发展的时代&#xff0c;web应用的质量直接关系着企业的声誉和用户的体验。因此&#xff0c;自动化测试成为了保障软件质量的重要手段之一。今天&#xff0c;我将带大家详细了解一款在测试领域大放异彩的神器——Playwright&#xff0c;并通过Python语言…