代码改变世界

leetcode - Unique Paths II

2013-11-10 09:55  张汉生  阅读(138)  评论(0)    收藏  举报

 

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