【LeetCode每天一题】Minimum Path Sum(最短路径和)
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example:
Input:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum. 思路
这道题我们可以使用回溯法,动态规划。但是回溯法的时间复杂度太高。当m,n比较大时时间复杂度会比较高,会出现时间复杂度超时的情况。因此我直接使用动态规划来解决。 这里的动态方程为 dp[i][j] = min(dp[i-1][j], dp[i][j-1])+nums[i][j]。时间复杂度为O(m*n), 空间复杂度为O(n),
解决代码
class Solution(object):
def minPathSum(self, nums):
"""
:type grid: List[List[int]] # 这一个我们采用的是申请一个辅助矩阵来解决问题,所以这个方法的空间复杂度为O(n*m)。
:rtype: int
"""
if not nums:
return 0
m , n = len(nums), len(nums[0])
dp = []
for i in range(m): # 申请辅助空间
dp.append([0]*n)
dp[0][0] = nums[0][0]
for i in range(1, m): # 初始第一列
dp[i][0] = dp[i-1][0] + nums[i][0]
for i in range(1,n): # 初始化第一行
dp[0][i] = dp[0][i-1] + nums[0][i] for i in range(1, m): # 从第二行第二个元素开始直到最后一个
for j in range(1, n):
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + nums[i][j]
return dp[m-1][n-1]
空间复杂度为O(n)的解法
class Solution(object):
def minPathSum(self, nums):
"""
:type grid: List[List[int]]
:rtype: int
"""
if not nums:
return 0
m , n = len(nums), len(nums[0])
dp = [0]*n # 申请一个长度为n的辅助数组
dp[0] = nums[0][0]
for i in range(1, n): # 先对第一行进行初始化
dp[i] = dp[i-1] + nums[0][i] for i in range(1, m): # 然后从第二行开始
dp[0] += nums[i][0] # 每一行第一个元素只能从上面达到。
for j in range(1, n):
dp[j] = min(dp[j], dp[j-1]) + nums[i][j]
return dp[-1]
【LeetCode每天一题】Minimum Path Sum(最短路径和)的更多相关文章
- LeetCode之“动态规划”:Minimum Path Sum && Unique Paths && Unique Paths II
之所以将这三道题放在一起,是因为这三道题非常类似. 1. Minimum Path Sum 题目链接 题目要求: Given a m x n grid filled with non-negative ...
- LeetCode(64) Minimum Path Sum
题目 Total Accepted: 47928 Total Submissions: 148011 Difficulty: Medium Given a m x n grid filled with ...
- 动态规划小结 - 二维动态规划 - 时间复杂度 O(n*n)的棋盘型,题 [LeetCode] Minimum Path Sum,Unique Paths II,Edit Distance
引言 二维动态规划中最常见的是棋盘型二维动态规划. 即 func(i, j) 往往只和 func(i-1, j-1), func(i-1, j) 以及 func(i, j-1) 有关 这种情况下,时间 ...
- [LeetCode] Unique Paths && Unique Paths II && Minimum Path Sum (动态规划之 Matrix DP )
Unique Paths https://oj.leetcode.com/problems/unique-paths/ A robot is located at the top-left corne ...
- Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum)
Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum) 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. ...
- 刷题64. Minimum Path Sum
一.题目说明 题目64. Minimum Path Sum,给一个m*n矩阵,每个元素的值非负,计算从左上角到右下角的最小路径和.难度是Medium! 二.我的解答 乍一看,这个是计算最短路径的,迪杰 ...
- [Leetcode Week9]Minimum Path Sum
Minimum Path Sum 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-path-sum/description/ Descr ...
- LeetCode 64. 最小路径和(Minimum Path Sum) 20
64. 最小路径和 64. Minimum Path Sum 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明: 每次只能向下或 ...
- 【leetcode】Minimum Path Sum
Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to b ...
随机推荐
- echart 标题配置
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JavaScript我学之七数组
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘. 数组是“多态数组" ,啥都可以放 //JavaScript中的多态数组 var arr = ["one", 2 ...
- windows 查看端口占用,杀进程
查看 443端口占用 netstat -ano | findstr "443" ,得到如下信息: TCP [::]:443 [::]:0 LISTENING 2320 发现是被23 ...
- 怎样设置高效的IIS
适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows ...
- 4.基于梯度的攻击——MIM
MIM攻击原论文地址——https://arxiv.org/pdf/1710.06081.pdf 1.MIM攻击的原理 MIM攻击全称是 Momentum Iterative Method,其实这也是 ...
- vue 解决IE不能用的问题
一般来说VUE本身是不支持IE的,但是可以用特殊的方法来解决,亲测可用第一步:下载插件 cnpm install --save babel-polyfill第二步:入口文件main.js引入( imp ...
- Android 常用知识点
1.Kotlin 将字节大小转换为KB,MB,GB 并保留两位小数 fun getFileSize(size: Long): String { var GB = 1024 * 1024 * 1024 ...
- node环境配置
1.进入node的官网https://nodejs.org/en/download/ 2.选择自己需要的安装包 3.下载之后,直接安装http://www.runoob.com/nodejs/node ...
- (60)Wangdao.com第十天_JavaScript 函数_作用域_闭包_IIFE_回调函数_eval
函数 实现特定功能的 n 条语句封装体. 1. 创建一个函数对象 var myFunc = new Function(); // typeof myFunc 将会打印 function ...
- jsp模板继承
jsp通过自定义标签实现类似模板继承的效果 关于标签的定义.注册.使用在上面文章均以一个自定义时间的标签体现,如有不清楚自定义标签流程的话请参考这篇文章 http://www.cnblogs.com/ ...