给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
地址:https://leetcode-cn.com/problems/minimum-path-sum/
最开始使用递归寻找子问题的解,提交超时。然后老老实实写了迭代,用数组存放子问题的结果以免重复计算。
func minPathSum(grid [][]int) int {
min := func(a, b int) int {
if a < b {
return a
} else {
return b
}
}
dp := make([][]int, len(grid))
for i, _ := range dp {
dp[i] = make([]int, len(grid[0]))
}
dp[0][0] = grid[0][0]
if len(dp) > 1 {
for i := 1; i < len(dp); i++ {
dp[i][0] = grid[i][0] + dp[i-1][0]
}
}
if len(dp[0]) > 1 {
for j := 1; j < len(dp[0]); j++ {
dp[