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

Leetcode 3651. Minimum Cost Path with Teleportations

  • Leetcode 3651. Minimum Cost Path with Teleportations
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3651. Minimum Cost Path with Teleportations

1. 解题思路

这一题思路上就是一个动态规划的思路。

我们定义dp[i][j]表示从坐标(i,j)(i,j)(i,j)开始走到终点所需要的最小cost,然后,我们首先可以没有什么难度的计算出如果没有传送的情况下的每一个位置上的dp[i][j]的值。

然后,我们分别考察至多kkk次teleportation之后每个位置上的cost的变化,这个的话我们只需要考察在第k−1k-1k1次跳跃之后进行下一次跳跃后dp矩阵会产生的变化,这个的话我们只需要将所有的矩阵点按照其原本的值与当前的cost进行从小到大排列,然后每一个点的cost就都会变成其前序点当中的cost的最小值。

然后,我们只需要基于更新的cost值重新计算一遍整个dp矩阵的内容即可。

2. 代码实现

给出python代码实现如下:

class Solution:def minCost(self, grid: List[List[int]], k: int) -> int:n, m = len(grid), len(grid[0])cost = [[0 for _ in range(m)] for _ in range(n)]for j in range(m-1, 0, -1):cost[-1][j-1] = cost[-1][j] + grid[-1][j]for i in range(n-1, 0, -1):cost[i-1][-1] = cost[i][-1] + grid[i][-1]for j in range(m-1, 0, -1):cost[i-1][j-1] = min(cost[i-1][j]+grid[i-1][j], cost[i][j-1]+grid[i][j-1])for _ in range(k):seen = set()points = sorted([(grid[i][j], cost[i][j], i, j) for i in range(n) for j in range(m)])min_cost = math.inffor _, _, i, j in points:min_cost = min(min_cost, cost[i][j])cost[i][j] = min_costfor j in range(m-1, 0, -1):cost[-1][j-1] = min(cost[-1][j-1], cost[-1][j] + grid[-1][j])for i in range(n-1, 0, -1):cost[i-1][-1] = min(cost[i-1][-1], cost[i][-1] + grid[i][-1])for j in range(m-1, 0, -1):cost[i-1][j-1] = min(cost[i-1][j-1], cost[i-1][j]+grid[i-1][j], cost[i][j-1]+grid[i][j-1])return cost[0][0]

提交代码评测得到:耗时4428ms,占用内存20.47MB。

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

相关文章:

  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • USB基础 -- 字符串描述符 (String Descriptor) 系统整理文档
  • 2025年8月更新!Windows 7 旗舰版 (32位+64位 轻度优化+离线驱动)
  • hla mHAg
  • cortex-m中断技巧
  • 数组学习2
  • 十年回望:Vue 与 React 的设计哲学、演进轨迹与生态博弈
  • idea部署到docker
  • 静配中心配药智能化:基于高并发架构的Go语言实现
  • MySQL 函数大赏:聚合、日期、字符串等函数剖析
  • Ps切片后无法导出原因(存储为web所用格式)为灰色,及解决文案
  • Day119 持续集成docker+jenkins
  • Dockerfile优化指南:利用多阶段构建将Docker镜像体积减小90%
  • 【音频信号发生器】基本应用
  • LAMP 架构部署:Linux+Apache+MariaDB+PHP
  • C# 使用注册表开机自启
  • [C#] WPF - 自定义控件(行列间距UniformGrid)
  • docker compose再阿里云上无法使用的问题
  • 矿物分类系统开发笔记(一):数据预处理
  • 楼宇自控系统深化设计需关注哪些核心要点?技术与应用解析
  • Casadi库C++运行速度比python版本慢解决方法
  • 从第一性原理理解Embedding:独立模型vs大模型内嵌层的本质区别
  • linux应用软件编程:线程
  • 使用Idea安装JDK
  • 04.IO 重定向和管道
  • 【深度学习】pytorch深度学习框架的环境配置
  • 如何在服务器 clone github 项目
  • axure chrome 浏览器插件的使用
  • goland怎么取消自动删除未使用的包
  • 学习链接。