###### LeetCode Unique Paths II

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[
[0,0,0],
[0,1,0],
[0,0,0]
]


The total number of unique paths is 2.

Note: m and n will be at most 100.

public static int uniquePathsWithObstacles(int[][] obstacleGrid)
{
int m = obstacleGrid.length;
int n = obstacleGrid[0].length;
int[][] nums = new int[m][n];
if(obstacleGrid[0][0] == 1)
return 0;
nums[0][0] = 1;
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(i == 0 && j > 0)
{
if(obstacleGrid[i][j] == 0 && obstacleGrid[i][j - 1] != 1 && nums[i][j-1] != 0)
nums[i][j] = 1;
else if(obstacleGrid[i][j] == 0 && obstacleGrid[i][j - 1] == 1)
nums[i][j] = 0;
else if(obstacleGrid[i][j] == 1)
nums[i][j] = 0;
}
if(i > 0 && j == 0)
{
if(obstacleGrid[i][j] == 0 && obstacleGrid[i-1][j] != 1 && nums[i-1][j] != 0)
nums[i][j] = 1;
else if(obstacleGrid[i][j] == 0 && obstacleGrid[i-1][j] == 1)
nums[i][j] = 0;
else if(obstacleGrid[i][j] == 1)
nums[i][j] = 0;
}
if(i > 0 && j > 0)
{
if(obstacleGrid[i][j] == 1)
nums[i][j] = 0;
else if(obstacleGrid[i][j] != 1)
nums[i][j] = nums[i-1][j] + nums[i][j-1];
}
}
}
return nums[m-1][n-1];
}

#### LeetCode 63 — Unique Paths II（C++ Java Python）

2014-02-25 22:19:29

#### [LeetCode][Java] Unique Paths II

2015-07-17 09:59:08

#### 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II（唯一路径问题II）】

2015-08-01 07:19:35

#### LeetCode63:Unique Paths II

2015-06-12 16:05:00

#### Unique Paths II -- LeetCode

2014-03-26 04:15:28

#### Leetcode 63:Unique Paths II

2016-02-24 00:15:36

#### leetcode 63. Unique Paths II-唯一路径|动态规划

2016-03-11 20:53:57

#### leetcode 62. Unique Paths-唯一路径|动态规划

2016-03-11 15:16:22

#### 【LeetCode】Unique Paths 解题报告

2014-12-08 17:19:53

#### 63 Unique Paths II

2015-10-17 15:31:45

## 不良信息举报

LeetCode Unique Paths II