public int calculateMinimumHP(int[][] dungeon) {
int m = dungeon.length;
int n = dungeon[0].length;
int[][] dp = new int[m+1][n+1];
for (int i = 0; i <= m; i++) {
Arrays.fill(dp[i], Integer.MAX_VALUE);
}
dp[m][n-1] = dp[m-1][n] = 1;
// dp[i][j] represents the min hp needed at position (i, j)
// Add dummy row and column at bottom and right side
for (int i = m-1; i >= 0; i--) {
for (int j = n-1; j >= 0; j--) {
int need = Math.min(dp[i][j+1], dp[i+1][j]) - dungeon[i][j];
dp[i][j] = need <= 0 ? 1 : need;
}
}
return dp[0][0];
}
public int calculateMinimumHP(int[][] dungeon) {
int m = dungeon.length;
int n = dungeon[0].length;
int[] dp = new int[n+1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[n-1] = 1;
for (int i = m-1; i >= 0; i--) {
for (int j = n-1; j >= 0; j--) {
int need = Math.min(dp[j+1], dp[j]) - dungeon[i][j];
dp[j] = need <= 0 ? 1 : need;
}
}
return dp[0];
}
174. 地下城游戏
最新推荐文章于 2022-07-23 21:26:54 发布