和那个 #最长公共子序列-II# 题目有点像:
横向和竖向单向相加赋值,由于只能右和下,所以当前格子的值选取 左侧和上侧值中最小的值相加赋值

public class Solution {
/**
*
* @param matrix int整型二维数组 the matrix
* @return int整型
*/
public int minPathSum (int[][] matrix) {
int i = 0;
for(;i < matrix.length;i++){
for(int j = 0; j < matrix[i].length;j++){
if(i == 0 && j == 0){
continue;
}else if(j == 0){
matrix[i][j] += matrix[i-1][j];
}else if(i == 0){
matrix[i][j] += matrix[i][j-1];
}else{
matrix[i][j] += Math.min(matrix[i][j-1],matrix[i-1][j]);
}
}
}
return matrix[i-1][matrix[i-1].length-1];
}
}