63. 不同路径 II
解法一:回溯(超时)
class Solution:
def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
self.count = 0 #全局变量,记录路径总数
m, n = len(obstacleGrid), len(obstacleGrid[0])
#边界条件,由于只对右边和下方块检测,对(0,0)块没有检测,若该块有路障,直接返回
if obstacleGrid[0][0] == 1:
return self.count
self.travel(obstacleGrid, 0, 0, m, n)
return self.count
def travel(self, obstacleGrid, row, col, m, n): #递归函数
#下标越界或遇到障碍
if row >= m or col >= n or obstacleGrid[row][col] == 1:
return
if row == m-1 and col == n-1: #到达终点,路径+1
self.count += 1
self.travel(obstacleGrid, row, col+1, m, n) #递归右侧
self.travel(obstacleGrid, row+1, col, m, n) #递归下方解法二:dp
最后更新于