news 2026/6/9 23:29:24

hot100 994.腐烂的橘子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100 994.腐烂的橘子

1.思路/步骤:以下图为例

(1)统计所有初始就腐烂的橘子的位置,加到列表q中,现在q = [(0,0)]。

(2)初始化答案ans = 0,模拟橘子腐烂的过程,不断循环,直到没有新鲜的橘子,或者q为空。

(3)ans加1,在第ans = 1分钟,遍历q中橘子的四方向相邻的新鲜橘子,把这些橘子腐烂,q更新为这些橘子的位置,现在q = [(0,1),(1,0)]。

(4)ans加1,在第ans = 2分钟,遍历q中橘子的四方向相邻的新鲜橘子,把这些橘子腐烂,q更新为这些橘子的位置,现在q = [(0,2),(1,1)]。

(5)ans加1,在第ans = 3分钟,遍历q中橘子的四方向相邻的新鲜橘子,把这些橘子腐烂,q更新为这些橘子的位置,现在q = [(2,1)]。

(6)ans加1,在第ans = 4分钟,遍历q中橘子的四方向相邻的新鲜橘子,把这些橘子腐烂,q更新为这些橘子的位置,现在q = [(2,2)]。

(7)由于没有新鲜橘子,退出循环。

2.为了判断是否有永远不会腐烂的橘子(如示例2),我们可以统计初始新鲜橘子的个数fresh。在BFS中,每有一个新鲜橘子被腐烂,就把fresh减一,这样最后如果发现fresh>0,就意味着有橘子永远不会腐烂,返回-1。

3.疑问:如果代码中不在while循环中判断fresh>0,会发生什么?

答:会在腐烂完所有新鲜橘子后,多循环一次,这会导致ans比实际多1。

4.复杂度分析:

(1)时间复杂度:O(mn),其中m和n分别为grid的行数和列数。

(2)空间复杂度:O(mn)。

附代码:

class Solution { private static final int[][] DIRECTIONS = {{-1,0},{1,0},{0,-1},{0,1}}; //四方向 public int orangesRotting(int[][] grid) { int m = grid.length; int n = grid[0].length; int fresh = 0; List<int[]> q = new ArrayList<>(); for(int i = 0;i < m;i++){ for(int j = 0;j < n;j++){ if(grid[i][j] == 1){ fresh++; //统计新鲜橘子的个数 }else if(grid[i][j] == 2){ q.add(new int[]{i,j}); //一开始就腐烂的橘子 } } } int ans = 0; while(fresh > 0 && !q.isEmpty()){ ans++; //经过一分钟 List<int[]> tmp = q; q = new ArrayList<>(); for(int[] pos : tmp){ //已经腐烂的橘子 for(int[] d : DIRECTIONS){ //四方向 int i = pos[0] + d[0]; int j = pos[1] + d[1]; if(i >= 0 && i < m && j >= 0 && j < n && grid[i][j] == 1){ //新鲜橘子 fresh--; grid[i][j] = 2; //变成腐烂的橘子 q.add(new int[]{i,j}); } } } } return fresh > 0 ? -1 : ans; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 6:49:33

cdn的流量包是什么作用

CDN流量包是云计算场景中针对CDN&#xff08;内容分发网络&#xff09;服务的预付费流量资源套餐&#xff0c;核心作用是抵扣CDN服务运行过程中产生的实际出网流量&#xff0c;替代按流量计费的后付费模式&#xff0c;帮助用户更灵活地管理成本、保障服务稳定性。其核心价值首先…

作者头像 李华
网站建设 2026/6/9 19:59:42

使用VLLM+Deepseek+Milvus构建本地向量库

Milvus是一个开源、专门构建的分布式向量数据库&#xff0c;用于为生成式人工智能&#xff08;GenAI&#xff09;工作负载存储、索引和搜索向量。它能够执行混合搜索、 元数据过滤、重排序并高效处理数万亿向量&#xff0c;这使得 Milvus 成为人工智能和机器学习工作负载的首选…

作者头像 李华
网站建设 2026/6/7 11:28:09

AI原生应用开发:用户画像特征工程的10个实用技巧

AI原生应用开发:用户画像特征工程的10个实用技巧 关键词:用户画像、特征工程、AI原生应用、数据融合、特征分箱、时效性管理、特征评估、高维稀疏、缺失值处理、业务对齐 摘要:在AI原生应用中,用户画像是实现个性化服务的“数字指纹”,而特征工程则是构建这枚指纹的“雕刻…

作者头像 李华
网站建设 2026/6/7 12:34:09

Java毕设项目推荐-基于springboot的台球开台运营管理系统基于springboot的台球厅管理球房会员服务与桌台调度系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/7 11:44:02

2026实测:6款降AI率工具深度评测,用免费工具实现论文AI率直降

即将毕业的大学生们&#xff01;是否也在深夜对着电脑屏幕发呆&#xff0c;你的论文初稿明明字字心血&#xff0c;却被冰冷的AI检测系统无情标红&#xff0c;却被系统判定AI率超标&#xff0c;这感觉太憋屈了。 更绝望的是&#xff0c;为了“洗清嫌疑”&#xff0c;你开始手动…

作者头像 李华