您的位置:首页 > 产品设计 > UI/UE

Unique Paths II

2017-11-29 08:25 274 查看
follow up带有阻挡的路径

Follow up for "Unique Paths":

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.

java

public class Solution {
/*
* @param obstacleGrid: A list of lists of integers
* @return: An integer
*/
public int uniquePathsWithObstacles(int[][] grid) {
// write your code here
if (grid == null || grid.length == 0) {
return 0;
}
if (grid[0] == null || grid[0].length == 0) {
return 0;
}
// state
int m = grid.length;
int n = grid[0].length;
int[][] f = new int[m]
;
// initialize
if (grid[0][0] == 1) {
return 0;
}
f[0][0] = 1;
for (int i = 1; i < m; i++) {
if (grid[i][0] == 1) {
break;
} else {
f[i][0] = 1;
}
}
for (int i = 1; i < n; i++) {
if (grid[0][i] == 1) {
break;
} else {
f[0][i] = 1;
}
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (grid[i][j] == 1) {
f[i][j] = 0;
} else {
f[i][j] = f[i - 1][j] + f[i][j - 1];
}
}
}
return f[m - 1][n - 1];
}
}

python
class Solution:
"""
@param: obstacleGrid: A list of lists of integers
@return: An integer
"""
def uniquePathsWithObstacles(self, grid):
# write your code here
if grid is None or len(grid) == 0:
return 0
if grid[0] is None or len(grid[0]) == 0:
return 0
# state
m, n = len(grid), len(grid[0])
f = [[0] * n for i in range(m)]
if grid[0][0] == 1:
return 0
f[0][0] = 1
# initialize
for i in range(1, m):
if grid[i][0] == 1:
break
else:
f[i][0] = 1
for i in range(1, n):
if grid[0][i] == 1:
break
else:
f[0][i] = 1
# function
for i in range(1, m):
for j in range(1, n):
if grid[i][j] == 1:
f[i][j] = 0
else:
f[i][j] = f[i - 1][j] + f[i][j - 1]
return f[m - 1][n - 1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: