Dungeon Game

Write a function to determine the knight's minimum initial health so that he is able to rescue the princess.

  • Time: O(n)
  • Space: O(n)
public int calculateMinimumHP(int[][] grid) {
    if (grid == null || grid.length == 0 || grid[0].length == 0) return 0;
    int m = grid.length;
    int n = grid[0].length;
    grid[m - 1][n - 1] = Math.max(1 - grid[m - 1][n - 1], 1);
    for (int i = m - 2; i >= 0; i--) {
        grid[i][n - 1] = Math.max(grid[i + 1][n - 1] - grid[i][n - 1], 1);
    }
    for (int j = n - 2; j >= 0; j--) {
        grid[m - 1][j] = Math.max(grid[m - 1][j + 1] - grid[m - 1][j], 1);
    }

    for (int i = m - 2; i >= 0; i--) {
        for (int j = n - 2; j >= 0; j--) {
            int min = Math.min(grid[i + 1][j], grid[i][j + 1]);
            grid[i][j] = min > grid[i][j] ? min - grid[i][j] : 1;
        }
    }
    return grid[0][0];
}

results matching ""

    No results matching ""