/* * @lc app=leetcode id=64 lang=java * * [64] Minimum Path Sum */ // @lc code=start class Solution { public int minPathSum(int[][] grid) { int[][] dp = new int[grid.length][grid[0].length]; for(int i=0; i=0) { // update from upside if(dp[i][j] < 0) { dp[i][j] = dp[i-1][j] + grid[i][j]; } else { dp[i][j] = Math.min(dp[i][j], dp[i-1][j] + grid[i][j]); } } if(j-1>=0) { // update from leftside if(dp[i][j] < 0) { dp[i][j] = dp[i][j-1] + grid[i][j]; } else { dp[i][j] = Math.min(dp[i][j], dp[i][j-1] + grid[i][j]); } } } } return dp[dp.length-1][dp[0].length-1]; } } // @lc code=end