leetcode 每日一题 64. 最小路径和

Posted nil_f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 64. 最小路径和相关的知识,希望对你有一定的参考价值。

动态规划

思路:

dp[i][j]表示走完 i,j 位置所需的最短路径,由于只能向下或者向右,所以第一行和第一列中每个值为当前值加上前一个值,即dp[0][j]=dp[0]

[j]+dp[0][j-1],dp[i][0] = dp[i][0]+dp[i-1][0]。非第一行和第一列的值为当前值加上其上边与左边中的较小值,即dp[i][j] = dp[i][j] + min(dp[i-1]

[j],dp[i][j-1])

代码:

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        if not grid:
            return 0
        rowSize = len(grid)
        colSize = len(grid[0])
        for i in range(1,colSize):
            grid[0][i] = grid[0][i] + grid[0][i-1]
        for j in range(1,rowSize):
            grid[j][0] = grid[j][0] + grid[j-1][0]
        for i in range(1,rowSize):
            for j in range(1,colSize):
                grid[i][j] = grid[i][j]+min(grid[i-1][j],grid[i][j-1])
        return grid[-1][-1]

 

以上是关于leetcode 每日一题 64. 最小路径和的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:28. 最小路径和

《LeetCode之每日一题》:64.最小好进制

Java算法 每日一题 编号209:长度最小的子数组

Java算法 每日一题 编号209:长度最小的子数组

《LeetCode之每日一题》:266.查找和最小的 K 对数字

leetcode每日一题-598:范围求和