给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径和。
注意:你每次只能向下或向右移动。
思路:求出每一个位置到达的最小路径,就是左边和上边位置的最小值。初始化就是第一行和第一列各个数字相加即可。
package main
import "math"
/**
*
* @param grid int整型二维数组
* @return int整型
*/
func minPathSum( grid [][]int ) int {
// write code here
lenX := len(grid)
lenY := len(grid[0])
status := make([][]int, lenX)
for i := 0; i < lenX; i++ {
status[i] = make([]int, lenY)
if i == 0 {
status[0][0] = grid[0][0]
} else {
status[i][0] = status[i-1][0] + grid[i][0]
}
}
for i := 1; i < lenY; i++ {
status[0][i] = status[0][i-1] + grid[0][i]
}
for i := 1; i < lenX; i ++ {
for j := 1; j < lenY; j ++ {
status[i][j] = int(math.Min(float64(status[i-1][j] + grid[i][j]), float64(status[i][j-1] + grid[i][j])))
}
}
return status[lenX-1][lenY-1]
}
该博客介绍了如何在Go语言中实现找到一个二维数组中从左上角到右下角的最小路径和。通过动态规划的方法,初始化第一行和第一列的状态,并在后续迭代中计算每个位置的最小路径。最后返回右下角的值作为结果。
255

被折叠的 条评论
为什么被折叠?



