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.
Example 1
Input: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
Output: 2
Explanation: Without the obstacle there would be 6 paths through the 3 x 3 grid. The centre obstacle blocks every path through it, leaving only two: along the top row then down the right side, or down the left side then along the bottom.
Example 2
Input: obstacleGrid = [[0,1],[0,0]]
Output: 1
Explanation: The top-right cell is blocked, so the only path is down first and then right.
Example 3
Input: obstacleGrid = [[1]]
Output: 0
Explanation: The starting cell itself is an obstacle, so the robot has no path at all.
The number of ways to reach a cell is the sum of the ways to reach the cell above and the cell to the left, since those are the only moves in. Obstacle cells have zero ways. Fill the grid from the top-left; the bottom-right holds the answer.
Run checks all cases above. Submit evaluates all test cases.