博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--064--最小路径和
阅读量:5072 次
发布时间:2019-06-12

本文共 1523 字,大约阅读时间需要 5 分钟。

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例:

输入:

[
  [1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。

 

思路:dp思想,为每个点构造最短路径矩阵,每次看左边和上边的最短路径,最小的那个加上该位置的值,就是到达该位置的最短路径。

由于是两层for,时间复杂度比较高

1 class Solution: 2     def minPathSum(self, grid: List[List[int]]) -> int: 3         if len(grid) == 0:return 0 4         res = [[99 for n in range(len(grid[0]))] for m in range(len(grid))] 5         for i in range(len(grid)): 6             for j in range(len(grid[0])): 7                 if i == 0 and j == 0: 8                     res[i][j] = grid[i][j] 9                 elif i == 0 and j != 0:10                     res[i][j] = res[i][j-1] + grid[i][j]11                 elif i != 0 and j == 0:12                     res[i][j] = res[i-1][j] + grid[i][j]13                 else:14                     res[i][j] = min(res[i-1][j],res[i][j-1]) + grid[i][j]15         return res[-1][-1]16         17

提交的最快的一种:

□  √  √      第一行的√,依赖于其左边的   第一列的√依赖于其上面的,先算出来,直接在原矩阵计算就行,空间复杂度降了

√ □  □ 

√ □  □ 

1 class Solution: 2     def minPathSum(self, grid: List[List[int]]) -> int: 3          4         for i in range(1,len(grid)): 5             grid[i][0]+=grid[i-1][0] 6         for i in range(1,len(grid[0])): 7             grid[0][i]+=grid[0][i-1] 8          9         for i in range(1,len(grid)):10             for j in range(1,len(grid[0])):11                 grid[i][j]=min(grid[i-1][j]+grid[i][j], grid[i][j-1]+grid[i][j])12         13         return grid[-1][-1]

 

转载于:https://www.cnblogs.com/NPC-assange/p/11436838.html

你可能感兴趣的文章
生成器模式(建造者模式)
查看>>
ros中删除某个包之后用apt安装的包找不到
查看>>
分享几个可用的rtsp, http測试url
查看>>
Hadoop - YARN 启动流程
查看>>
(八十六)使用系统自带的分享框架Social.framework
查看>>
gitlab wiki 500
查看>>
sql 执行顺序
查看>>
C和C++实务精选丛书
查看>>
强制 类型转换
查看>>
PWN_3 ORW
查看>>
Android快速开发不可或缺的11个工具类
查看>>
【原】docker部署单节点consul
查看>>
样式化复选框(Styling Checkbox)
查看>>
对抗熵增 耗散结构 个人成长
查看>>
题解-python-CodeForces 227A
查看>>
linux用户、文件权限相关命令
查看>>
【Spark篇】---SparkStreaming+Kafka的两种模式receiver模式和Direct模式
查看>>
异常Exception
查看>>
【Spark篇】---SparkSQL on Hive的配置和使用
查看>>
HDU 3761 炸碉堡【半平面交(nlogn)】+【二分】
查看>>