public class Solution{ /** * * @param matrix int整型二维数组 the matrix * @return int整型 */ int minPathSum(int [][]matrix) { // write code here int i = matrix.length; int j = matrix[0].length; int[][] table = new int[i][j]; table[0][0] = matrix[0][0]; for (int k = 1; k < i; k++) { table[0][k] = matrix[0][k] + table[0][k - 1]; } // 第一列表格的值,都等于 当前单元格的值 + 上一行单元格的值 for (int k = 1; k < j; k++){ table[k][0] = matrix[k][0] + table[k - 1][0]; } // 从1,1开始,每次填充的表格 = min(当前单元格 + 上一个单元格的值,当前单元格 + 左边单元格的值) 取最小路径和 for (int m = 1; m < i; m++) { for (int n = 1; n < j; n++) { table[m][n] = Math.min(matrix[m][n] + table[m - 1][n], matrix[m][n] + table[m][n - 1]); } } // 循环结束, 表格最后一个元素即为解 return table[i - 1][j - 1]; } }