給定一個(gè)包含非負(fù)整數(shù)的 m x n 網(wǎng)格 grid ,請(qǐng)找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。
說(shuō)明:每次只能向下或者向右移動(dòng)一步。
func MinimumPathSum(grid [][]int) int {
//自下而上遍歷,grid數(shù)組每個(gè)元素只會(huì)讀取一次,所以可將每個(gè)位置的最小和直接記錄在grid數(shù)組中,注意邊界即可,
for i := 0; i < len(grid); i++ {
for j := 0; j < len(grid[0]); j++ {
if j == 0 && i >= 1 {
grid[i][j] = grid[i-1][j] + grid[i][j]
continue
}
if i == 0 && j >= 1 {
grid[i][j] = grid[i][j-1] + grid[i][j]
continue
}
if i > 0 && j > 0 {
if grid[i-1][j] < grid[i][j-1] {
grid[i][j] = grid[i-1][j] + grid[i][j]
} else {
grid[i][j] = grid[i][j-1] + grid[i][j]
}
}
}
}
return grid[len(grid)-1][len(grid[0])-1]
}