Unique Paths II - Problem

You are given an m x n integer array grid. There is a robot initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]).

The robot can only move either down or right at any point in time. An obstacle and space are marked as 1 or 0 respectively in grid.

A path that the robot takes cannot include any square that is an obstacle. Return the number of possible unique paths that the robot can take to reach the bottom-right corner.

The testcases are generated so that the answer will be less than or equal to 2 * 10^9.

Input & Output

Example 1 — Basic Grid with Obstacle
$ Input: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
Output: 2
💡 Note: There are 2 ways to reach the bottom-right corner: Right → Down → Down → Right and Down → Down → Right → Right. The obstacle at [1,1] blocks some paths.
Example 2 — Start Blocked
$ Input: obstacleGrid = [[0,1],[0,0]]
Output: 1
💡 Note: There is 1 way: Down → Right. The obstacle at [0,1] forces us to go down first.
Example 3 — No Obstacles
$ Input: obstacleGrid = [[0,0],[0,0]]
Output: 2
💡 Note: Without obstacles, there are 2 paths: Right → Down and Down → Right.

Constraints

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 ≤ m, n ≤ 100
  • obstacleGrid[i][j] is 0 or 1

Visualization

Tap to expand
INPUTALGORITHMRESULT3×3 Grid with ObstaclesS000X000ERobot moves RIGHT or DOWNAvoiding obstacle at [1,1]1Initialize: dp[0][0] = 12Fill DP table bottom-up3dp[i][j] = dp[i-1][j] + dp[i][j-1]4Skip obstacles (set to 0)Time: O(m×n) Space: O(n)2Unique PathsTwo valid routes:1. Right → Down → Down → Right2. Down → Right → Down → Right💡Key Insight:Dynamic Programming builds up the solution by counting paths to each cell,where dp[i][j] = dp[i-1][j] + dp[i][j-1] for obstacle-free cells.TutorialsPoint - Unique Paths II | Dynamic Programming
Asked in
Google 45 Amazon 38 Facebook 32 Apple 28
78.5K Views
High Frequency
~25 min Avg. Time
2.3K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen