[63][中等][动态规划] 不同路径 II
最后更新于
最后更新于
输入:
[
[0,0,0],
[0,1,0],
[0,0,0]
]
输出: 2
解释:
3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
height, width = len(obstacleGrid), len(obstacleGrid[0])
dp = [[0] * width for _ in range(height)]
for i in range(height):
if obstacleGrid[i][0] == 1:
break
dp[i][0] = 1
for j in range(width):
if obstacleGrid[0][j] == 1:
break
dp[0][j] = 1
for i in range(1, height):
for j in range(1, width):
if obstacleGrid[i][j] == 0:
dp[i][j] = (dp[i - 1][j] if i > 0 else 0) + (dp[i][j - 1] if j > 0 else 0)
return dp[-1][-1]