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];
}