public class MinimumPathSum
{
public MinimumPathSum(){}
public int minPathSum(int[][] grid)
{
if(grid.length == 0 || grid[0].length == 0)
{return 0;}
int m= grid.length;
int n= grid[0].length;
int[] dp= new int[n];
for(int i=0;i<m;i++)
{
if(i == 0)
{dp[0]= grid[0][0];}
else
{dp[0] += grid[i][0];}
for(int j=1;j<n;j++)
{
if(i>0)
{
dp[j]= Math.min(dp[j-1], dp[j]) + grid[i][j];
}
else
{
dp[j]= grid[i][j] + dp[j-1];
}
}
}
return dp[n-1];
}
}