174. Dungeon Game
class Solution { public int calculateMinimumHP(int[][] dungeon) { if(dungeon.length==0||dungeon[0].length==0) return 0; int M=dungeon.length; int N=dungeon[0].length; int[][] dp=new int[M][N]; for(int i=M-1;i>=0;i--) for(int j=N-1;j>=0;j--) { if(i==M-1&&j==N-1) dp[i][j]=1-dungeon[i][j]; else if(i==M-1) dp[i][j]=dp[i][j+1]-dungeon[i][j]; else if(j==N-1) dp[i][j]=dp[i+1][j]-dungeon[i][j]; else dp[i][j]=Math.min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]; if(dp[i][j]<=0) dp[i][j]=1; } return dp[0][0]; } }