63.不同路径II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
# 初始化
m,n = len(obstacleGrid),len(obstacleGrid[0])
d = [[ 1 for _ in range(n)] for _ in range(m)]
for i in range(m): # 边线出现石头,边线后面不可能走。
if obstacleGrid[i][0]==1:
while i<m:
d[i][0] = 0
i += 1
break
for j in range(n): # 边线出现石头,边线后面不可能走。
if obstacleGrid[0][j]==1:
while j<n:
d[0][j] = 0
j += 1
break
for i in range(m): # 石头位置 不可能走。
for j in range(n):
if obstacleGrid[i][j]==1:
d[i][j] = 0
# print(d)
# 遍历
for i in range(1,m):
for j in range(1,n):
if obstacleGrid[i][j]==0: # 没石头才可能走
d[i][j] = d[i-1][j] + d[i][j-1]
d[i][j]
return d[i][j]