参考我的另一篇
https://blog.csdn.net/weixin_41545780/article/details/105775225?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158826197219724848362654%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158826197219724848362654&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v25-2
微改一下即可
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
if obstacleGrid == [] or obstacleGrid[-1][-1] == 1 or obstacleGrid[0][0]:
return 0
m = len(obstacleGrid)
n = len(obstacleGrid[0])
dp = []
for i in range(m):
dp.append([0 for _ in range(n)])
tempres = 1
for i in range(m - 2, -1,-1):
if obstacleGrid[i][n-1] == 1:
tempres = 0
dp[i][n-1] = tempres
tempres = 1
for i in range(n - 1, -1, -1):
if obstacleGrid[m-1][i] == 1:
tempres = 0
dp[m-1][i] = tempres
for i in range(m - 2, -1 ,-1):
for j in range(n - 2, -1 , -1):
if obstacleGrid[i][j] == 1:
dp[i][j] = 0
else:
tempresxia = dp[i+1][j] if obstacleGrid[i+1][j] != 1 else 0
tempresyou = dp[i][j+1] if obstacleGrid[i][j+1] != 1 else 0
dp[i][j] = tempresxia + tempresyou
return dp[0][0]