class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (obstacleGrid.size() == 0 || obstacleGrid[0].size() == 0)
{
return 0;
}
int m = obstacleGrid.size();
int n = obstacleGrid[0].size();
vector<int> vec(n, 0);
//还是老方法,只不过把有障碍物的点的通路个数设为0即可
vec[n - 1] = obstacleGrid[m - 1][n - 1] == 1 ? 0 : 1;
for (int i = n - 2; i >= 0; --i)
{
vec[i] = obstacleGrid[m - 1][i] == 0 ? vec[i + 1] : 0;
}
for (int i = m - 2; i >= 0; --i)
{
vec[n - 1] = obstacleGrid[i][n - 1] == 1 ? 0 : vec[n - 1];
for (int j = n - 2; j >= 0; --j)
{
vec[j] = obstacleGrid[i][j] == 1 ? 0 : vec[j] + vec[j + 1];
}
}
return vec[0];
}
};
LeetCode-Unique Paths II
最新推荐文章于 2024-10-04 20:45:38 发布