LeetCode:64. 最小路径和
生活随笔
收集整理的這篇文章主要介紹了
LeetCode:64. 最小路径和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
64. 最小路徑和
題目描述
給定一個包含非負整數的?m?x?n?網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。
說明:每次只能向下或者向右移動一步。
示例:
輸入: [[1,3,1],[1,5,1],[4,2,1] ] 輸出: 7 解釋: 因為路徑 1→3→1→1→1 的總和最小。解題思路
動態規劃
該問題可分解為多個子問題,從終點向起點開始分析,分析每個點到終點的最小值。
每個點的最小路徑和=該點的值+min(右邊點最小路徑和,下邊點最小路徑和)
解題代碼
public int minPathSum(int[][] grid) {int m = grid.length;int n = grid[0].length;int[][] path = new int[m][n];path[m - 1][n - 1] = grid[m - 1][n - 1];for (int i = m - 1; i >= 0; i--) {for (int j = n - 1; j >= 0; j--) {if (i + 1 <= m - 1 && j + 1 <= n - 1) {path[i][j] = grid[i][j] + Math.min(path[i][j + 1], path[i + 1][j]);} else if (i + 1 <= m - 1) {path[i][j] = grid[i][j] + path[i + 1][j];} else if (j + 1 <= n - 1) {path[i][j] = grid[i][j] + path[i][j + 1];}}}return path[0][0];}解題結果
| 61 / 61?個通過測試用例 | 狀態: 通過 |
| 執行用時:7 ms |
總結
以上是生活随笔為你收集整理的LeetCode:64. 最小路径和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode:63. 不同路径 II
- 下一篇: LeetCode:85. 最大矩形