From 18c1e6d1713843487cc6c26d29a795640db7ddad Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 11 Aug 2021 10:48:21 +0800 Subject: [PATCH] =?UTF-8?q?64:=E6=9C=80=E5=B0=8F=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leetcode/editor/cn/MinimumPathSum.java | 71 +++++++++++++++++++ .../java/leetcode/editor/cn/MinimumPathSum.md | 32 +++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/MinimumPathSum.java create mode 100644 src/main/java/leetcode/editor/cn/MinimumPathSum.md diff --git a/src/main/java/leetcode/editor/cn/MinimumPathSum.java b/src/main/java/leetcode/editor/cn/MinimumPathSum.java new file mode 100644 index 0000000..4ebe3a1 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MinimumPathSum.java @@ -0,0 +1,71 @@ +//给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 +// +// 说明:每次只能向下或者向右移动一步。 +// +// +// +// 示例 1: +// +// +//输入:grid = [[1,3,1],[1,5,1],[4,2,1]] +//输出:7 +//解释:因为路径 1→3→1→1→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] <= 100 +// +// Related Topics 数组 动态规划 矩阵 +// 👍 955 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.TwoArray; + +//64:最小路径和 +class MinimumPathSum { + public static void main(String[] args) { + //测试代码 + Solution solution = new MinimumPathSum().new Solution(); + TwoArray twoArray = new TwoArray("[[1,3,1],[1,5,1],[4,2,1]]", true); + System.out.println(solution.minPathSum(twoArray.getArr())); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int minPathSum(int[][] grid) { + int[][] dp = new int[grid.length][grid[0].length]; + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[0].length; j++) { + if (i > 0 && j > 0) { + dp[i][j] = grid[i][j] + Math.min(dp[i - 1][j], dp[i][j - 1]); + } else if (i > 0) { + dp[i][j] = grid[i][j] + dp[i - 1][j]; + } else if (j > 0) { + dp[i][j] = grid[i][j] + dp[i][j - 1]; + } else { + dp[i][j] = grid[i][j]; + } + } + } + return dp[grid.length - 1][grid[0].length - 1]; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/MinimumPathSum.md b/src/main/java/leetcode/editor/cn/MinimumPathSum.md new file mode 100644 index 0000000..9852772 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MinimumPathSum.md @@ -0,0 +1,32 @@ +

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

+ +

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

+ +

 

+ +

示例 1:

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

示例 2:

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

 

+ +

提示:

+ + +
Related Topics
  • 数组
  • 动态规划
  • 矩阵
  • \n
  • 👍 955
  • 👎 0
  • \ No newline at end of file