class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid)
{
const int m=obstacleGrid.size();
const int n=obstacleGrid[0].size();
if(obstacleGrid[0][0]==1 || obstacleGrid[m-1][n-1]==1)
return 0;
vector<vector<int>> dp(m,vector<int>(n,0));
for(int i=0;i<m;++i)
{
if(obstacleGrid[i][0]==1)
break;
else
dp[i][0]=1;
}
for(int j=0;j<n;++j)
{
if(obstacleGrid[0][j]==1)
break;
else
dp[0][j]=1;
}
for(int i=1;i<m;++i)
{
for(int j=1;j<n;++j)
{
if(obstacleGrid[i-1][j]==1&& obstacleGrid[i][j-1]!=1)
dp[i][j]=dp[i][j-1];
if(obstacleGrid[i][j-1]==1 && obstacleGrid[i-1][j]!=1)
dp[i][j]=dp[i-1][j];
if(obstacleGrid[i-1][j]!=1&& obstacleGrid[i][j-1]!=1)
dp[i][j]=dp[i][j-1]+dp[i-1][j];
}
}
return dp[m-1][n-1];
}
};
Unique Paths II
最新推荐文章于 2024-07-25 09:04:50 发布
