没看答案。
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
'''
basecase:dptable的第一行和第一列中出现1的格子之前的都为1,之后的都为0
state:dp[i][j]表示到达网格(i, j)有多少条路经
transfer:如果网格(i, j)为1, dp[i][j] = 0
其他情况都为dp[i][j] = dp[i-1][j] + dp[i][j-1]
result:dp[-1][-1]
'''
row, col = len(obstacleGrid), len(obstacleGrid[0])
dp = [[0]*col for _ in range(row)]
for i in range(col):
if obstacleGrid[0][i] == 0:
dp[0][i] = 1
else: break
for j in range(row):
if obstacleGrid[j][0] == 0:
dp[j][0] = 1
else: break
for i in range(1, row):
for j in range(1, col):
if obstacleGrid[i][j] == 1:
dp[i][j] = 0
else:
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[-1][-1]