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

【hot100篇-python刷题记录】【腐烂的橘子】

R6-图论

思路:尽可能从中间开始吧,向四周扩散。

实际上就可以理解为BFS搜索。

 使用rot,fresh集合分别记录腐烂、新鲜的集合的元素下标

使用集合是为了更方便增减元素(直接使用-=即可,集合加减)

遍历,rot集合中的每一个元素,对其进行上下左右移动,判断是否存在

存在的话就fresh-rot集合得到最后的集合。

class Solution:def orangesRotting(self, grid: List[List[int]]) -> int:m=len(grid)n=len(grid[0])rot={(i,j) for i in range(m) for j in range(n) if grid[i][j]==2}fresh={(i,j) for i in range(m) for j in range(n) if grid[i][j]==1}time=0while fresh:if not rot:return -1rot={(i+di,j+dj) for i,j in rot for di,dj in [(0,1),(0,-1),(1,0),(-1,0)] if (i+di,j+dj) in fresh}fresh-=rottime+=1return time

ps:

上下左右移动

# 设初始点为 (i, j)
for di, dj in [(0, 1), (0, -1), (1, 0), (-1, 0)]: # 上、下、左、右i + di, j + dj


http://www.mrgr.cn/news/9782.html

相关文章:

  • VirtualBox下安装Centos7.9虚拟机的踩坑记录
  • 大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
  • MongoDB 创建数据库
  • 使用redis设计延迟队列
  • 梧桐数据库(WuTongDB):数据库技术中LR算法详解
  • 使用npm配置vue项目历程
  • BLE mesh model 汇总
  • SSD Fresh:固态硬盘优化专家
  • Android笔试面试题AI答之Kotlin补充考点
  • STM32标准库HAL库——MPU6050原理和代码
  • ABAP 程序间传递数据
  • Unity实现异步的三种方法
  • CSS的font-stretch属性与字符胖瘦控制
  • Kubernetes中etcd备份与恢复
  • 学习WebGl基础知识
  • reactive() 的局限性
  • Java设计模式原则及中介者模式研究
  • 环境搭建 | Windows中MinGW-w64及GCC的下载、安装与配置
  • github源码指引:共享内存、数据结构与算法
  • 代码随想录训练营 Day38打卡 动态规划 part06 322. 零钱兑换 279. 完全平方数 139. 单词拆分