Unique Paths II — Grid with Obstacles

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem

Same as Unique Paths but some cells have obstacles (1). Cannot pass through them.


Solutions

Python

class Solution:
    def uniquePathsWithObstacles(self, grid: list[list[int]]) -> int:
        m,n=len(grid),len(grid[0])
        dp=[0]*n; dp[0]=1 if grid[0][0]==0 else 0
        for i in range(m):
            for j in range(n):
                if grid[i][j]==1: dp[j]=0
                elif j>0: dp[j]+=dp[j-1]
        return dp[n-1]

C++

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& grid){
        int m=grid.size(),n=grid[0].size();
        vector<long> dp(n,0); dp[0]=grid[0][0]==0?1:0;
        for(int i=0;i<m;i++) for(int j=0;j<n;j++){
            if(grid[i][j]==1){dp[j]=0;continue;}
            if(j>0) dp[j]+=dp[j-1];
        }
        return dp[n-1];
    }
};

Complexity

  • Time: O(m*n) | Space: O(n)

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro