news 2026/2/9 15:47:53

hot100-48腐烂的橘子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100-48腐烂的橘子

代码学习的是小红书的尼布斯老师,写的好好,思路写的也好好,很清晰易懂。

力扣的代码学习主要参考小红书的尼布斯老师和小熊饼干老师。

一、题目

m x n 的网格 grid 中,每个单元格可以有三个值:0、1、2。

每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。
返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

二、思路

1、DFS是一条路走到黑,从一个腐烂橘子出发,先一路向下感染到底,再回溯。无法保证同一时间被感染的橘子在同一轮处理。所以这道题要用BFS,逐层遍历,按时间层推进。【多源BFS】

2、遍历网格,将腐烂的橘子加入队列,并且新鲜的橘子计数统计。如果新鲜的橘子为0,那么腐烂的时间为0。如果队列不为空,就BFS传播,从队列中取出当前腐烂的橘子,并将四周的橘子变腐烂。处理一个队列就minutes++。最后判断新鲜橘子剩余那么返回-1,不剩余则返回minutes。

三、代码

class Solution { public int orangesRotting(int[][] grid) { int[][] dirs = {{0,1},{0,-1},{1,0},{-1,0}}; LinkedList<int[]> queue = new LinkedList<>(); int m = grid.length, n = grid[0].length; int freshCount = 0; for(int i =0;i<m;i++){ for(int j = 0; j<n;j++){ if(grid[i][j] == 2){ queue.offer(new int[] {i,j}); }else if(grid[i][j] == 1){ freshCount++; } } } if(freshCount ==0) return 0; int minutes = -1; while(!queue.isEmpty()){ int size = queue.size(); for(int k = 0;k<size;k++){ int[] cur = queue.poll(); int x = cur[0],y = cur[1]; for(int[] d : dirs){ int nx = x + d[0],ny = y+d[1]; if(nx>=0 && nx<m && ny>=0 && ny<n && grid[nx][ny] == 1){ grid[nx][ny] = 2; freshCount--; queue.offer(new int[]{nx,ny}); } } } minutes++; } return freshCount == 0 ? minutes :-1; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 15:27:05

1小时快速验证:用Rerank模型改进客服问答系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建客服问答Rerank原型系统&#xff0c;要求&#xff1a;1.使用现成QA对数据集 2.集成Sentence-BERT进行语义检索 3.添加基于用户反馈日志的Rerank层(点击率、解决率等特征) 4.实现…

作者头像 李华
网站建设 2026/2/9 9:54:28

FFN与MLP的关系

文章目录FFN与MLP的定义FFN与MLP的关联结构对比应用场景差异数学表达示例总结MLP实现代码代码说明代码实现参数说明使用示例关键设计点FFN与MLP的定义 FFN&#xff08;Feed-Forward Network&#xff09;是一种前馈神经网络&#xff0c;由输入层、隐藏层和输出层组成&#xff0…

作者头像 李华
网站建设 2026/2/5 22:14:38

告别手动adb push:3种高效替代方案对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个效率对比工具&#xff0c;展示四种adb push方式的性能差异&#xff1a;1. 传统手动命令&#xff1b;2. Shell脚本自动化&#xff1b;3. 图形界面工具&#xff1b;4. AI智能…

作者头像 李华
网站建设 2026/2/7 3:47:54

CUDA_VISIBLE_DEVICES:提升GPU利用率的3个技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 编写一个性能对比测试脚本&#xff0c;比较使用和不使用CUDA_VISIBLE_DEVICES时的GPU利用率差异。脚本应&#xff1a;1) 在两种模式下运行相同的深度学习训练任务&#xff1b;2) 记…

作者头像 李华
网站建设 2026/2/7 6:36:56

传统调试vsAI辅助:解决Spring启动异常效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个效率对比工具&#xff0c;能够&#xff1a;1. 模拟生成Spring启动异常场景&#xff1b;2. 记录手动调试过程耗时&#xff1b;3. 展示AI辅助诊断过程&#xff1b;4. 生成对比…

作者头像 李华
网站建设 2026/2/5 21:35:14

Keil零基础入门:用STM32点亮第一个LED的全流程解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个面向新手的STM32F103C8T6开发教程项目&#xff0c;要求&#xff1a;1.逐步演示Keil MDK安装和配置 2.创建完整LED闪烁工程 3.包含GPIO初始化代码详解 4.提供J-link/ST-link…

作者头像 李华