63. Unique Paths II

public int uniquePathsWithObstacles(int[][] obstacleGrid) {
    int width = obstacleGrid[0].length;
    int[] dp = new int[width];
    dp[0] = 1;
    for (int[] row : obstacleGrid) {
        for (int j = 0; j < width; j++) {
            if (row[j] == 1) {
                dp[j] = 0;
            } else if (j > 0) {
                dp[j] += dp[j - 1];
            }
        }
    }
    return dp[width - 1];
}

照着62题添加障碍条件:

public int uniquePathsWithObstacles(int[][] obstacleGrid) {
    int row = obstacleGrid.length;
    int col = obstacleGrid[0].length;
    int[][] dp = new int[row + 1][col + 1];
    dp[1][1] = (obstacleGrid[0][0] == 1) ? 0 : 1;
    for (int i = 1; i <= row; i++) {
        for (int j = 1; j <= col; j++) {
            dp[i][j] += (obstacleGrid[i - 1][j - 1] == 1) ? 0 : dp[i - 1][j] + dp[i][j - 1];
        }
    }
    return dp[row][col];
}

results matching ""

    No results matching ""