最小路径和

最小路径和

题目描述

原题链接:64. 最小路径和 - 力扣(LeetCode)

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

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

示例 1:

image-20230701103943915

1
2
3
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 13111 的总和最小。

示例 2:

1
2
输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 200

解题思路

定义集合f[i] [j]为到达(i, j )位置时的最小数字和

状态转移方程:f[i] [j] = min(f[i-1] [j], f[i] [j-1]) + gird[i-1] [j-1]

边界问题:防止不越界就可以

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int minPathSum(int[][] grid) {
for(int i = 0; i < grid.length; i++){
for(int j = 0; j < grid[i].length; j++){
if(i == 0 && j == 0)continue;
if(i == 0)
grid[i][j] = grid[i][j-1] + grid[i][j];
if(j == 0)
grid[i][j] = grid[i-1][j] + grid[i][j];
if(i != 0 && j != 0)
grid[i][j] = Math.min(grid[i-1][j], grid[i][j-1]) + grid[i][j];
}
}
return grid[grid.length - 1][grid[0].length - 1];
}
}

AC记录:

image-20230701110533363


最小路径和
http://example.com/2023/07/01/最小路径和/
作者
子川
发布于
2023年7月1日
许可协议