题目描述:
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.
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.
思路:
此题是在Unique Paths那题基础上增设了一个条件,解法仍旧是动态规划。
AC代码:
class Solution(object):
def uniquePathsWithObstacles(self, obstacleGrid):
"""
:type obstacleGrid: List[List[int]]
:rtype: int
"""
m, n = len(obstacleGrid), len(obstacleGrid[0])
martix = [[0] * n] * m
for i in range(m):
for j in range(n):
if obstacleGrid[i][j] == 1:
martix[i][j] = 0
else:
if i == 0 and j == 0:
martix[i][j] = 1
elif i == 0:
martix[i][j] = martix[i][j - 1]
elif j == 0:
martix[i][j] = martix[i - 1][j]
else:
martix[i][j] = martix[i - 1][j] + martix[i][j - 1]
return martix[m - 1][n - 1]