LeetCode 64 最小路径和

题目描述:

思路:

采用动态规划的方法,具体思路和之前几个路径问题类似,使用一个辅助二维数组tem,tem中第1行中的每个值是原数组值+tem左侧一个位置的值,tem中第1列中的每个值是原数组值+tem上侧一个位置的值。tem其余位置的值都是从左侧一个位置和上侧一个位置选出最小值,加上原数组值,最后tem[-1][-1]就是结果值。

具体思路参考LeetCode 62:https://blog.csdn.net/sinat_28928833/article/details/89509410

代码:

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        if len(grid) == 0 or len(grid[0]) == 0:
            return 0
        row = len(grid)
        col = len(grid[0])
        
        tem = [[0 for i in range(col)] for j in range(row)]
        tem[0][0] = grid[0][0]
        
        for i in range(1, row):
            tem[i][0] = grid[i][0] + tem[i-1][0]
        for j in range(1, col):
            tem[0][j] = grid[0][j] + tem[0][j-1]
        for i in range(1, row):
            for j in range(1, col):
                tem[i][j] = min(tem[i-1][j], tem[i][j-1]) + grid[i][j]
                #print(i,' ',j,' ',tem)
        return tem[-1][-1]

猜你喜欢

转载自blog.csdn.net/sinat_28928833/article/details/89915581