腐烂的橘子

news2024/11/15 17:47:30

题目链接

腐烂的橘子

题目描述


注意点

  • grid[i][j] 仅为 0、1 或 2
  • 每分钟,腐烂的橘子周围4个方向上相邻的新鲜橘子都会腐烂

解答思路

  • 广度优先遍历找到每分钟腐烂的橘子,将第i - 1分腐烂的橘子都添加到队列中,在第i分钟,第i - 1分腐烂的橘子相邻方向的新鲜橘子也会腐烂,重复该操作直到没有新鲜橘子或队列中没有腐烂橘子为止

代码

class Solution {
    public int orangesRotting(int[][] grid) {
        int res = 0;
        int freshSum = 0;
        int row = grid.length;
        int col = grid[0].length;
        int[][] direction = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
        Deque<int[]> deque = new ArrayDeque<>();
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (grid[i][j] == 1) {
                    freshSum++;
                }
                if (grid[i][j] == 2) {
                    deque.offerLast(new int[]{i, j});
                }
            }
        }
        while (freshSum > 0 && !deque.isEmpty()) {
            int size = deque.size();
            for (int i = 0; i < size; i++) {
                int[] loc = deque.pollFirst();
                for (int j = 0; j < direction.length; j++) {
                    int x = loc[0] + direction[j][0];
                    int y = loc[1] + direction[j][1];
                    if (x >= 0 && x < row && y >= 0 && y < col && grid[x][y] == 1) {
                        grid[x][y] = 2;
                        freshSum--;
                        deque.offerLast(new int[]{x, y});
                    }
                }
            }
            res++;
        }
        return freshSum == 0 ? res : -1;
    }
}

关键点

  • 广度优先遍历的思想
  • 队列中只存储第i - 1分腐烂的橘子,在这之前腐烂的橘子应该已经出队
  • 橘子腐烂需要同步将grid该位置的状态修改为腐烂,也就是2

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

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

相关文章

重学java 30.API 1.String字符串

于是&#xff0c;虚度的光阴换来了模糊 —— 24.5.8 一、String基础知识以及创建 1.String介绍 1.概述 String类代表字符串 2.特点 a.Java程序中的所有字符串字面值(如“abc”)都作为此类的实例(对象)实现 凡是带双引号的&#xff0c;都是String的对象 String s "abc&q…

Linux基础服务NFS入门篇

文章目录 Linux基础服务NFS入门篇0.前言1.NFS1.1NFS简介1.2NFS配置 Linux基础服务NFS入门篇 0.前言 本文根据大佬们的资料整理了NFS的基础知识&#xff0c; 加深对linux运维基础服务工具的理解&#xff0c;以便个人查询复习使用。 1.NFS 资料来自B站阿铭linux的印象笔记&#…

基于Springboot的校园疫情防控系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园疫情防控系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

17 空闲空间管理

目录 假设 底层机制 分割与合并 追踪已分配空间的大小 嵌入空闲列表 让堆增长 基本策略 最优匹配 首次匹配 下次匹配 其他方式 分离空闲列表 伙伴系统 小结 分页是将内存成大小相等的内存块&#xff0c;这样的机制下面&#xff0c;很容易去管理这些内存&#xff0c…

内外网文件传输摆渡工具大全|企业跨网文件交换解决方案

有许多文件传输工具可以用于内外网之间的安全文件传输。以下是一些常用的文件传输工具&#xff1a; 1、FileLink FileLink跨网文件传输系统提供一系列功能&#xff0c;包括文件传输审批、审计、敏感文件检查以及文件操作管控等。这些功能旨在确保文件传输的安全性和合规性&am…

Relaxed MemoryConsistency

SC和TSO都被称之为强&#xff08;strong&#xff09;保序模型&#xff1b; because the global memory order of each model usually respects (preserves) per-thread program order&#xff1b;回想一下&#xff0c;对于load和store的所有四种组合&#xff08;Load -> Lo…

python-dict序列化的数据为啥前后不一致

前情提要及背景:流式数据的二次处理终结篇-CSDN博客 假如直接将dict进行str,那么编码数据都是一致的,但是在postman上就表现不那么好看,如下: 而之前的显示如下: 其中的差别就是单引号与双引号的差别了。 采用如下方案无疑是最笨的方法了: 在Python中,如果你想将处理…

CMakeLists.txt语法规则:数学运算 math

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一些常用变量&#xff0c;常用命令&#xff0c;双引号的作用。条件判断语句&#xff0c;循环语句等等。 本文简单学习一下 CMakeLists.txt语法中数学运算 match。 二. CMakeLists.txt语法规则&#xff1a;数学运算 math 在…

倍思|西圣开放式耳机哪个好用?热门机型深度测评!

在数字化生活的浪潮中&#xff0c;耳机已成为我们不可或缺的伴侣。然而&#xff0c;长时间佩戴传统的耳机容易导致的耳道疼痛等问题&#xff0c;严重的话将影响听力。许多人开始寻找更为舒适的佩戴体验。开放式耳机因为不需要需直接插入耳道的设计&#xff0c;逐渐受到大众的青…

创新指南|共创B2B独立站出海“效果”护城河

B2B 共同创造是一种通过在整个创新过程中紧密迭代来与最重要的客户共同创造新业务价值的强大方式。我们的方法是将设计思维、精益创业和商业模式创新的方法与面向客户的特定格式相结合&#xff0c;以激励参与者&#xff0c;同时融入用户、业务和技术合作伙伴-买家视角的关键价值…

LLMs:《Better Faster Large Language Models via Multi-token Prediction》翻译与解读

LLMs&#xff1a;《Better & Faster Large Language Models via Multi-token Prediction》翻译与解读 目录 《Better & Faster Large Language Models via Multi-token Prediction》翻译与解读 Abstract 2、Method方法 Memory-efficient implementation 高效内存实…

鸿蒙OpenHarmony开发板【快速入门】大合集

快速入门 快速入门概述 基于IDE入门 搭建开发环境 搭建Windows环境搭建Ubuntu环境配置远程访问环境创建工程并获取源码 轻量系统&#xff08;基于Hi3861开发板&#xff09; 编写“Hello World”程序编译烧录运行 小型系统&#xff08;基于Hi3516开发板&#xff09; 编写“Hell…

照片生成ai漫改头像生成漫画全套教程免费(自取)

今天给大家分享一一个AI漫改头像&#xff0c;轻松日增1000&#xff0c;简单操作好上手的一个互联网新项目&#xff0c;哈那其实AI漫改头像也火了差不多有半年左右了&#xff0c; 那其实利用AI软件将真人的照片生成漫画的形象&#xff0c;这个看起来很简单的方法却在小红书上大…

【全开源】Java同城信息付费系统家政服务房屋租赁房屋买卖房屋装修信息发布平台小程序APP公众号源码

同城信息付费小程序是一个集合了本地信息服务的平台&#xff0c;用户可以通过该平台获取各种同城信息&#xff0c;并支付相应的费用以享受特定服务。 信息分类与展示&#xff1a;小程序会根据不同的服务类型对信息进行分类&#xff0c;如家政服务、二手交易、房屋租赁、求职招…

node.js 下载安装 配置环境变量

1 官网下载 需要的版本https://nodejs.org/dist 下载 .msi的文件 2 根据安装向导&#xff0c;安装 3 检查安装 是否成功&#xff0c;winr 输入cmd&#xff0c;输入node --version 回车&#xff0c;查看版本 4 配置换进变量 node路径是 安装时 的安装路径 5 vscode 启动项目…

HTTP/1.1、HTTP/2、HTTP/3 的演变

HTTP/1.1、HTTP/2、HTTP/3 的演变 HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f;HTTP/2 做了什么优化&#xff1f;HTTP/3 做了哪些优化&#xff1f; HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f; HTTP/1.1 相比 HTTP/1.0 性能上的改进&#xff1a; 使用长连接的…

【数据结构】详解栈

今天我们主要来了解栈&#xff01;如果对知识点有模糊&#xff0c;可翻阅以往文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 c语言专栏&#xff1a;c语言_小八哥向前冲~的博客-CSDN博…

【ARM】ARM寄存器和异常处理

目录 1.指令的执行过程 2. ARM处理器概述 3.ARM指令集 4.ARM存储模型 5. ARM工作模式 6.ARM寄存器组织 &#xff08;1&#xff09;寄存器 &#xff08;2&#xff09; ARM寄存器 &#xff08;3&#xff09;CPSR寄存器​​​​​​​ 7. ARM异常处理 &#xff08;1&am…

26 | 备库为什么会延迟好几个小时?

在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高、TPS 高时就会出现严重的主备延迟问题。 coordinator 就是原来的 sql_thread, 不过现在它不再直接更新数据了,只负责读取中转日志和分发事务。真正更新日志的,变成了 worker 线程。而 work 线程的个数,就是…

IDEA远程连接Docker服务

1.确保你的服务器已经安装docker docker安装步骤可查看&#xff1a;CentOS 9 (stream) 安装 Docker 2.安装完docker后开启远程连接 默认配置下&#xff0c;Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求&#xff0c;需要在配置文件中打开TCP监听…