【LeetCode】64. Minimum Path Sum

版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/82628239

 

class Solution:
    # 递归法(TLE)
    def search(self, grid, r, c):
        if r == 0 and c == 0:
            return grid[0][0]
        elif r == 0:
            return self.search(grid, r, c-1) + grid[r][c]
        elif c == 0:
            return self.search(grid, r-1, c) + grid[r][c]
        else:
            return min(self.search(grid, r-1, c) + grid[r][c], self.search(grid, r, c-1) + grid[r][c])
    def minPathSum(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        r, c = len(grid)-1, len(grid[0])-1
        return self.search(grid, r, c)


class Solution:
    # 动态规划
    def minPathSum(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        opt = [[0]*len(grid[0]) for _ in range(len(grid))]
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if i == 0 and j == 0:
                    opt[i][j] = grid[i][j]
                elif i == 0:
                    opt[i][j] = opt[i][j-1] + grid[i][j]
                elif j == 0:
                    opt[i][j] = opt[i-1][j] + grid[i][j]
                else:
                    opt[i][j] = min(opt[i-1][j] + grid[i][j], opt[i][j-1] + grid[i][j])
        return opt[-1][-1]


猜你喜欢

转载自blog.csdn.net/zzc15806/article/details/82628239