当前位置: 面试刷题>> 最小路径和Ⅰ (经典算法题500道)


### 题目描述补充 题目:**最小路径和Ⅰ** 给定一个 `m x n` 的网格 `grid`,网格中的每个单元格都有一个整数。从左上角开始,每次只能向右或向下移动一格,问从左上角移动到右下角的最小路径和是多少? ### 示例 **输入**: ``` grid = [ [1,3,1], [1,5,1], [4,2,1] ] ``` **输出**: 7 **解释**: 从左上角到右下角的最小路径和为 1→3→1→1→1 = 7。 ### PHP 示例代码 ```php function minPathSum($grid) { $m = count($grid); $n = count($grid[0]); // 初始化第一行和第一列 for ($i = 1; $i < $m; $i++) { $grid[$i][0] += $grid[$i-1][0]; } for ($j = 1; $j < $n; $j++) { $grid[0][$j] += $grid[0][$j-1]; } // 填充剩余部分 for ($i = 1; $i < $m; $i++) { for ($j = 1; $j < $n; $j++) { $grid[$i][$j] += min($grid[$i-1][$j], $grid[$i][$j-1]); } } return $grid[$m-1][$n-1]; } // 测试用例 $grid = [ [1,3,1], [1,5,1], [4,2,1] ]; echo minPathSum($grid); // 输出 7 ``` ### Python 示例代码 ```python def minPathSum(grid): m, n = len(grid), len(grid[0]) # 初始化第一行和第一列 for i in range(1, m): grid[i][0] += grid[i-1][0] for j in range(1, n): grid[0][j] += grid[0][j-1] # 填充剩余部分 for i in range(1, m): for j in range(1, n): grid[i][j] += min(grid[i-1][j], grid[i][j-1]) return grid[m-1][n-1] # 测试用例 grid = [ [1,3,1], [1,5,1], [4,2,1] ] print(minPathSum(grid)) # 输出 7 ``` ### JavaScript 示例代码 ```javascript function minPathSum(grid) { const m = grid.length; const n = grid[0].length; // 初始化第一行和第一列 for (let i = 1; i < m; i++) { grid[i][0] += grid[i-1][0]; } for (let j = 1; j < n; j++) { grid[0][j] += grid[0][j-1]; } // 填充剩余部分 for (let i = 1; i < m; i++) { for (let j = 1; j < n; j++) { grid[i][j] += Math.min(grid[i-1][j], grid[i][j-1]); } } return grid[m-1][n-1]; } // 测试用例 const grid = [ [1,3,1], [1,5,1], [4,2,1] ]; console.log(minPathSum(grid)); // 输出 7 // 码小课网站中有更多相关内容分享给大家学习 ``` 以上示例代码展示了如何使用 PHP、Python 和 JavaScript 来解决“最小路径和Ⅰ”问题。
推荐面试题