【LeetCode每天一题】Minimum Path Sum(最短路径和)

时间:2021-09-09 00:42:21

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(最短路径和)的更多相关文章

  1. LeetCode之“动态规划”:Minimum Path Sum && Unique Paths && Unique Paths II

    之所以将这三道题放在一起,是因为这三道题非常类似. 1. Minimum Path Sum 题目链接 题目要求: Given a m x n grid filled with non-negative ...

  2. LeetCode(64) Minimum Path Sum

    题目 Total Accepted: 47928 Total Submissions: 148011 Difficulty: Medium Given a m x n grid filled with ...

  3. 动态规划小结 - 二维动态规划 - 时间复杂度 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) 有关 这种情况下,时间 ...

  4. [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 ...

  5. Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum)

    Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum) 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. ...

  6. 刷题64. Minimum Path Sum

    一.题目说明 题目64. Minimum Path Sum,给一个m*n矩阵,每个元素的值非负,计算从左上角到右下角的最小路径和.难度是Medium! 二.我的解答 乍一看,这个是计算最短路径的,迪杰 ...

  7. [Leetcode Week9]Minimum Path Sum

    Minimum Path Sum 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-path-sum/description/ Descr ...

  8. LeetCode 64. 最小路径和(Minimum Path Sum) 20

    64. 最小路径和 64. Minimum Path Sum 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明: 每次只能向下或 ...

  9. 【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 ...

随机推荐

  1. 读书笔记-you-don't-konw-js

    第一部分:作用域和闭包 不要满足于只是让代码正常工作,而是弄清楚为什么是这样 作用域是什么 定义的变量存储在哪里?程序是如何找到变量的?实现的 规则就是作用域 传统编译语言执行前的编译三步骤(p5) ...

  2. Unity3d外包(北京)公司(长年承接U3D外包)

    我们制作各类型严肃游戏,虚拟现实,增强现实项目! 品质保证,售后完备. 联系请加QQ:372900288  电话:13911652504 我们团队成立于2011年10月,是一个专业从事严肃游戏研发的团 ...

  3. poj 2104:K-th Number(划分树,经典题)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 35653   Accepted: 11382 Ca ...

  4. 对div作用域的理解

    若想要div的height起作用,则要保证它上面的层的height也是有用的,如上图

  5. ppm与毫克/立方米怎么换算

    ppm是溶液浓度(溶质质量分数)的一种表示方法,1升水溶液中有1毫克的溶质,g/m3或mg/L. 对于气体:,一百万体积的空气中所含污染物的体积数. 而按我国规定,特别是环保部门,则要求气体浓度以质量 ...

  6. 关于 ServiceStack.Redis 4.0 License

    今天更新了框架中的Redis驱动ServiceStack.Redis,最新版本4.0.5.0. 在做简单压力测试时出现异常,提示每小时允许6000个请求. The free-quota limit o ...

  7. linux下安装cmake和mysql遇到的问题总结

    首先是在安装cmake的过程中遇到的问题: 1.開始使用yum命令安装时,不知道为什么一直不行,然后就准备wget 来先下载压缩包,再手动编译. 因为网络限制,wget不能下载外网的东西一直显示con ...

  8. 转载:ECMAScript 6简介

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发 ...

  9. ubuntu18.04安装安装JDK

    1.前提准备: 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2. ...

  10. GDOI2019游记

    只是提前开坑啊,CCF不要禁我赛啊QwQ 虽然才初三,不能进省队,但还是要拼一把,至少不能垫底吧. NTF和CDW两位初二巨佬都在四川省选拿了非正式选手Rank3,4,我还有什么理由去摸鱼? Day\ ...