1 class Solution {
2 public:
3 int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
4 // IMPORTANT: Please reset any member data you declared, as
5 // the same Solution instance will be reused for each test case.
6 if (obstacleGrid.size() == 0 || obstacleGrid[0].size() == 0)
7 return 0;
8 int m = obstacleGrid.size();
9 int n = obstacleGrid[0].size();
10 int * f = new int[n];
11 if (obstacleGrid[0][0]==1)
12 f[0] = 0;
13 else f[0] = 1;
14 for (int i = 1; i<n; i++){
15 if (obstacleGrid[0][i]==1)
16 f[i] = 0;
17 else f[i] = f[i-1];
18 }
19 for (int i = 1; i < m; i++){
20 if (obstacleGrid[i][0] == 1)
21 f[0] = 0;
22 for (int j = 1; j < n; j++){
23 if (obstacleGrid[i][j] == 1)
24 f[j] = 0;
25 else
26 f[j] += f[j - 1];
27 }
28 }
29 int rlt = f[n - 1];
30 delete[]f;
31 return rlt;
32 }
33 };