Skip to content

Commit d478cd6

Browse files
committed
Unique Paths II
1 parent 13ce25b commit d478cd6

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

UniquePathsII.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* Follow up for "Unique Paths":
3+
*
4+
* Now consider if some obstacles are added to the grids. How many unique paths would there be?
5+
*
6+
* An obstacle and empty space is marked as 1 and 0 respectively in the grid.
7+
*
8+
* For example,
9+
* There is one obstacle in the middle of a 3x3 grid as illustrated below.
10+
*
11+
* [
12+
* [0,0,0],
13+
* [0,1,0],
14+
* [0,0,0]
15+
* ]
16+
*
17+
* The total number of unique paths is 2.
18+
*
19+
* Note: m and n will be at most 100.
20+
*
21+
*/
22+
public class UniquePathsII {
23+
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
24+
int m = obstacleGrid.length;
25+
if (m == 0)
26+
return 0;
27+
int n = obstacleGrid[0].length;
28+
int[][] map = new int[m][n];
29+
map[0][0] = obstacleGrid[0][0] == 1 ? 0 : 1;
30+
for (int i = 1; i < m; i++) {
31+
map[i][0] = obstacleGrid[i][0] == 1 ? 0 : map[i - 1][0];
32+
}
33+
for (int j = 1; j < n; j++) {
34+
map[0][j] = obstacleGrid[0][j] == 1 ? 0 : map[0][j - 1];
35+
}
36+
for (int i = 1; i < m; i++) {
37+
for (int j = 1; j < n; j++) {
38+
map[i][j] = obstacleGrid[i][j] == 1 ? 0 : map[i - 1][j]
39+
+ map[i][j - 1];
40+
}
41+
}
42+
return map[m - 1][n - 1];
43+
}
44+
}

0 commit comments

Comments
 (0)