import java.util.*;


public class Solution {
    /**
     * 
     * @param grid int整型二维数组 
     * @return int整型
     */
    public int minPathSum (int[][] grid) {
        // write code here
        int row=grid.length;
        int col=grid[0].length;//列数是固定的
        //对特殊情况赋值
        for(int i=1;i<row;i++){
            grid[i][0]+=grid[i-1][0];
        }
        for(int j=1;j<col;j++){
            grid[0][j]+=grid[0][j-1];
        }
        //对非特殊情况累计计算
        for(int i=1;i<row;i++){
            for(int j=1;j<col;j++){
                grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);
            }
        }
        return grid[row-1][col-1];
    }
}