当前位置: 首页 > news >正文

官方网站弹幕怎么做永泰建设工程网站

官方网站弹幕怎么做,永泰建设工程网站,如何在大学网站做宣传,企业名称注册查询系统LeetCode 热题 100 | 994. 腐烂的橘子 大家好,今天我们来解决一道经典的算法题——腐烂的橘子。这道题在LeetCode上被标记为中等难度,要求我们计算网格中所有新鲜橘子腐烂所需的最小分钟数,或者返回不可能的情况。下面我将详细讲解解题思路&…

LeetCode 热题 100 | 994. 腐烂的橘子

大家好,今天我们来解决一道经典的算法题——腐烂的橘子。这道题在LeetCode上被标记为中等难度,要求我们计算网格中所有新鲜橘子腐烂所需的最小分钟数,或者返回不可能的情况。下面我将详细讲解解题思路,并附上Python代码实现。


问题描述

给定一个 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
解释: 左下角的橘子永远不会腐烂,因为腐烂只会发生在4个方向上。

示例3:

输入: grid = [[0,2]]
输出: 0
解释: 因为0分钟时已经没有新鲜橘子了,所以答案就是0。

解题思路

核心思想
  1. 广度优先搜索(BFS)

    • 使用队列来存储所有初始腐烂的橘子的位置。
    • 每分钟处理当前队列中的所有腐烂橘子,并将它们周围的新鲜橘子腐烂,同时加入队列。
    • 记录分钟数,直到队列为空。
    • 最后检查是否还有新鲜橘子剩余,若有则返回 -1,否则返回分钟数。
  2. 多源BFS

    • 由于初始可能有多个腐烂的橘子,因此需要同时从这些源点开始BFS。

Python代码实现

from collections import dequedef orangesRotting(grid):rows, cols = len(grid), len(grid[0])queue = deque()fresh = 0time = 0# 初始化队列,统计新鲜橘子数量for r in range(rows):for c in range(cols):if grid[r][c] == 2:queue.append((r, c))elif grid[r][c] == 1:fresh += 1# 如果没有新鲜橘子,直接返回0if fresh == 0:return 0# 四个方向directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]while queue and fresh > 0:# 每分钟处理当前队列中的所有腐烂橘子for _ in range(len(queue)):r, c = queue.popleft()for dr, dc in directions:nr, nc = r + dr, c + dcif 0 <= nr < rows and 0 <= nc < cols and grid[nr][nc] == 1:grid[nr][nc] = 2fresh -= 1queue.append((nr, nc))if queue:  # 只有腐烂了橘子才增加时间time += 1return time if fresh == 0 else -1# 测试示例
grid1 = [[2,1,1],[1,1,0],[0,1,1]]
grid2 = [[2,1,1],[0,1,1],[1,0,1]]
grid3 = [[0,2]]print(orangesRotting(grid1))  # 输出: 4
print(orangesRotting(grid2))  # 输出: -1
print(orangesRotting(grid3))  # 输出: 0

代码解析

  1. 初始化

    • 遍历网格,将所有初始腐烂的橘子位置加入队列,并统计新鲜橘子的数量 fresh
    • 如果没有新鲜橘子,直接返回 0
  2. BFS处理

    • 每分钟处理当前队列中的所有腐烂橘子,探索其四个方向的新鲜橘子。
    • 将新鲜橘子腐烂并加入队列,同时减少 fresh 计数。
    • 每分钟结束后,时间 time 增加1。
  3. 结果检查

    • 如果 fresh0,返回 time;否则返回 -1

复杂度分析

  • 时间复杂度:O(m × n),其中 m 是网格的行数,n 是网格的列数。每个单元格最多被访问一次。
  • 空间复杂度:O(m × n),最坏情况下队列中需要存储所有腐烂的橘子。

示例运行

示例1
输入: grid = [[2,1,1],[1,1,0],[0,1,1]]
输出: 4
示例2
输入: grid = [[2,1,1],[0,1,1],[1,0,1]]
输出: -1
示例3
输入: grid = [[0,2]]
输出: 0

总结

通过使用多源BFS,我们可以高效地模拟橘子腐烂的过程,并计算出所有新鲜橘子腐烂所需的最小分钟数。这种方法直观且易于实现,适合大多数场景。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!

http://www.dtcms.com/a/459010.html

相关文章:

  • 怎样设立网站精神文明建设网站模板
  • 哪一些网站使用vue做的商城网站建设资讯
  • 各大网站网址世界最新新闻
  • 如果制作个人网站房产局官网查询系统
  • 手机网站建设计wordpress模板的网站_网页字体怎么修改?
  • 深圳中国电信网站备案口碑好的vi设计公司
  • asp后台怎么加载网站贴吧引流推广
  • 基于51单片机心率仪—体温心率血氧蓝牙
  • 中小企业建设网站注册安全工程师证书
  • 小学scrach入门项目学习幸运大转盘项目
  • 备案不关闭网站吗游戏创作平台
  • 做企业网站 签合同要注意什么北京高端网站建设飞沐
  • 自己做的动画买给网站网站建设前景展望
  • 做设计去哪些网站下载素材怎样把自己做的网站上传
  • 1.1Java简介
  • 桂市做网站的朋友四川个人网站备案
  • 建设电影网站的关键quot 网站建设话术 quot
  • 小型网站开发语言网站建设表格的属性
  • 大气网站源码下载小程序商城开发北京
  • 学校网站要求广州海珠网站开发方案
  • 服务定制网站活动页面模板
  • 手机站点cn网站建设论文的部首
  • 如何联系网站站长企业网站推广的方法有什么
  • 无锡做网站哪里好连云港做网站制作
  • 蚌埠企业做网站html5网站正在建设中
  • 建行企业银行app官方下载软文怎么优化网站
  • 越南人一般去哪个网站做贸易在线a视频网站一级a做爰
  • 山东网站优化推广wordpress站点设置使用期限
  • CCF编程能力等级认证GESP—C++8级—20250927
  • 两学一做知识竞赛试题网站深圳网站设计专家乐云seo