题目:
分析:
这道题和前一道题——不同路径,极其相似,我们依然可以用类似的方法做
但是需要一定的调整
先对提供的数据进行处理
处理后:
不过我们需要对第一行和第一列做额外的处理
表格中的数字代表着从左上角的格子到该格子的路径数,由于前一个格子是障碍物,导致在第一行和第一列的部分格子的路径数也为0
之后我们按照前一道题的方法进行处理
最后就返回10
代码:
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int[][] res=new int[obstacleGrid.length][obstacleGrid[0].length];
int n=obstacleGrid.length;
int m=obstacleGrid[0].length;
if(obstacleGrid[0][0]==1) return 0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(obstacleGrid[i][j]==1)
res[i][j]=0;
else
res[i][j]=1;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
//对第一行和第一列特殊处理
if(i==0 ){
if(j==0)
continue;
if(res[i][j-1]==0)
res[i][j]=0;
continue;
}
if(j==0){
if(res[i-1][j]==0)
res[i][j]=0;
continue;
}
//普通处理
if(res[i][j]!=0)
res[i][j]=res[i-1][j]+res[i][j-1];
}
}
return res[n-1][m-1];
}
}