DP. Start from top and left edges. Formula is dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + board[i][j]. Note that top and left edges need to be added up.
Let's try even more enhanced one: no extra space.
Solution:
# T:O(m*n) S:O(1)
class Solution:
# @param {integer[][]} grid
# @return {integer}
def minPathSum(self, grid):
m, n = len(grid), len(grid[0])
for i in xrange(1, n):
grid[0][i] += grid[0][i-1]
for j in xrange(1, m):
grid[j][0] += grid[j-1][0]
for i in xrange(1, m):
for j in xrange(1, n):
grid[i][j] += min(grid[i-1][j], grid[i][j-1])
return grid[m-1][n-1]
Run Time: 72 ms
No comments:
Post a Comment