1 class Solution 2 { 3 public: 4 int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) 5 { 6 int szcol=obstacleGrid.size(); 7 int szrow=obstacleGrid[0].size(); 8 vector<int> row(szrow,0); 9 vector<int> col(szcol,0); 10 for(int i=0;i<szrow;i++) 11 { 12 if(obstacleGrid[0][i]==1) 13 break; 14 row[i]=1; 15 } 16 for(int j=0;j<szcol;j++) 17 { 18 if(obstacleGrid[j][0]==1) 19 break; 20 col[j]=1; 21 } 22 for(int j=1;j<szcol;j++) 23 { 24 row[0]=col[j]; 25 for(int i=1;i<szrow;i++) 26 { 27 if(obstacleGrid[j][i]==0) 28 row[i]=row[i]+row[i-1]; 29 else 30 row[i]=0; 31 } 32 } 33 return row[szrow-1]; 34 } 35 };
这个题核心思路和路径问题一样,不同的是障碍处的当前路径要置为0,并且只有遇到非障碍才计算当前可达路径数。