【LeetCode】64. Minimum Path Sum
阿新 • • 發佈:2018-12-09
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]