Unique Paths II — Grid with Obstacles
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
← Previous
Minimum Path Sum — Grid DP