classSolution{public:intuniquePathsWithObstacles(vector<vector<int>>& obstacleGrid){int m = obstacleGrid.size();int n = obstacleGrid[0].size();if(obstacleGrid[0][0]|| obstacleGrid[m -1][n -1]){return0;}int dp[m][n];memset(dp,0,sizeof(dp));for(int i =0; i < n && obstacleGrid[0][i]!=1;++i){
dp[0][i]=1;}for(int i =0; i < m && obstacleGrid[i][0]!=1;++i){
dp[i][0]=1;}for(int i =1; i < m;++i){for(int j =1; j < n;++j){if(obstacleGrid[i][j]){continue;}
dp[i][j]= dp[i][j -1]+ dp[i -1][j];}}return dp[m -1][n -1];}};