2026-07-160

最小路径

  • 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

  • 说明:每次只能向下或者向右移动一步。

实现思路

  • 必须要理解的点:
    • arr[m][n] 代表的是上一步到达该位置的路径
  • 那么就能知道
    • 当前位置的路径最小途径一定是它上一步可达路径里的最小已走路径和 + 到达当前当前位置的路径
  • 有哪些情况考虑
    • 最上面的各自只能往右走 arr[0][j] += arr[0][j-1]
    • 最左边的各自只能往下走
    • 第一个格子不用极端,因为没走呢

golang 实现

go
func minPathSum(grid [][]int) int { m := len(grid) n := len(grid[0]) for i := 0;i < m;i++ { for j :=0; j< n;j++ { if i == 0 && j == 0{ continue }else if i == 0 { grid[i][j] += grid[i][j-1] }else if j == 0 { grid[i][j] += grid[i-1][j] }else{ grid[i][j] += min(grid[i][j-1], grid[i-1][j]) } } } return grid[m-1][n-1] } func min(i,j int) int { if i > j { return j } return i }

本文作者:曹子昂

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!