LeetCode #63 Unique Paths II
题目
解题方法
类似于上一题Unique Paths,这道题加了一个障碍物矩阵,需要注意的点是:
- 障碍物所在位置没有unique path,即值为0;
- 如果障碍物在第一行,那么障碍物之后的行的unique path都是0,列同理。
其他方面的做法与上一题类似,不再赘述。
代码
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
matrix = []
row = []
m = len(obstacleGrid)
n = len(obstacleGrid[0])
for i in range(n):
if not obstacleGrid[0][i]:
if not i:
row.append(1)
elif row[i-1]:
row.append(1)
else:
row.append(0)
else:
row.append(0)
matrix.append(row)
for i in range(1, m):
for j in range(n):
if not j and not obstacleGrid[i][0]:
matrix.append([matrix[i-1][j]])
elif not j and obstacleGrid[i][0]:
matrix.append([0])
elif j and obstacleGrid[i][j]:
matrix[i].append(0)
else:
matrix[i].append(matrix[i-1][j] + matrix[i][j-1])
return matrix[-1][-1]

浙公网安备 33010602011771号