zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【Leetcode刷题Python】64. 最小路径和

PythonLeetCode 路径 最小 刷题 64
2023-09-14 09:13:00 时间

1 题目

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

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

示例 1:
在这里插入图片描述

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

2 解析

用一个一位数组来存储每一行到最右下角的最小路径总和,一行存储一个值。
最后返回最后一个元素就是最小路径目标值

3 Python实现

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        dp = [float('inf')]*(len(grid[0])+1)
        dp[1] = 0
        for row in grid:
            for idx,num in enumerate(row):
                dp[idx+1] = min(dp[idx],dp[idx+1])+num
        return dp[-1]