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

到达最后一个房间的最少时间II 类似棋盘转移规律查找

文章目录

3342.到达最后一个房间的最少时间II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 思路分析:最短路径问题,当然,由于不同的格子之间的移动的代价不统一,所以这个最短路径需要使用Dijkstra算法进行求解,对于直接使用Dijkstra算法模版的题目,大家可以先去做一下3341. 到达最后一个房间的最少时间 I
  • 这个题目难点在于如何计算从格子(x,y)出发的代价是1还是2

在这里插入图片描述

  • 通过画出具体的转移代价的图,我们发现是有规律的,当当前位于(x,y)的时候,转移的代码可以表示为(x+y)%2 + 1,既然得出了代价的计算,那么接下来直接套用Dijkstra算法的模版即可
import heapq
class Solution:def minTimeToReach(self, moveTime: List[List[int]]) -> int:n,m = len(moveTime),len(moveTime[0])dis = [[float("inf")]*m for _ in range(n)]dis[0][0] = 0 h = [(0,(0,0))]tmp = []cou = 1step = [(0,-1),(0,1),(-1,0),(1,0)]# 感觉得来一个中转的while h:d,(x,y) = heapq.heappop(h)if d > dis[x][y]:continueif x == n-1 and y == m-1:return d # 访问邻居# 处理十分巧妙time = (x+y) % 2 + 1for dx,dy in step:nx,ny = x+dx,y+dy if 0<=nx<n and 0<=ny<m:newdis = d + time if d + time > moveTime[nx][ny] + time else moveTime[nx][ny] + timeif newdis < dis[nx][ny]:dis[nx][ny] = newdisheapq.heappush(h,(newdis,(nx,ny)))

相关文章:

  • QTDesinger如何给label加边框
  • Java后端程序员学习前端之JavaScript
  • k8s的pod挂载共享内存
  • Mysql-OCP PPT课程讲解并翻译
  • 数据结构 - 9( 位图 布隆过滤器 并查集 LRUCache 6000 字详解 )
  • 9. 从《蜀道难》学CSS基础:三种选择器的实战解析
  • 分贝计在评估噪音对学习的影响中起着至关重要作用
  • android-ndk开发(10): use of undeclared identifier ‘pthread_getname_np‘
  • exo:打造家用设备AI集群的开源解决方案
  • 基于Flink的用户画像 OLAP 实时数仓统计分析
  • Android NDK版本迭代与FFmpeg交叉编译完全指南
  • CTF - PWN之ORW记录
  • 手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理
  • 【Linux】socket网络编程之UDP
  • 主场景 工具栏 植物卡牌的渲染
  • 使用adb设置wifi相关
  • 《100天精通Python——基础篇 2025 第16天:异常处理与调试机制详解》
  • SpringCloud服务拆分:Nacos服务注册中心 + LoadBalancer服务负载均衡使用
  • LeetCode 热题 100 131. 分割回文串
  • 【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • “一嗨租车”陷“五年后扣费”疑云,用户:违章处理莫名消失
  • 纪念|古文字学泰斗裘锡圭:“还有很多事情要做”
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准
  • 苹果Safari浏览器上的搜索量首次下降