classSolution: defuniquePaths(self, m: int, n: int) -> int: cur = [1] * n for row in range(1, m): for col in range(1, n): cur[col] += cur[col - 1] return cur[-1]
classSolution(object): defuniquePathsWithObstacles(self, obstacleGrid): m = len(obstacleGrid) n = len(obstacleGrid[0])
#如果起始单元格有障碍物,则只需返回即可 #没有到达目的地的路径 if obstacleGrid[0][0] == 1: return0
#到达起始像元的方式数量为 1 obstacleGrid[0][0] = 1
#填充第一列的值 for i in range(1,m): obstacleGrid[i][0] = int(obstacleGrid[i][0] == 0and obstacleGrid[i-1][0] == 1)
#填充第一行的值 for j in range(1, n): obstacleGrid[0][j] = int(obstacleGrid[0][j] == 0and obstacleGrid[0][j-1] == 1)
#从cell(1,1)开始填充值 #到达单元格[i] [j] =单元格[i-1] [j] +单元格[i] [j-1]的方式数量 #即从上方和左侧。 for i in range(1,m): for j in range(1,n): if obstacleGrid[i][j] == 0: obstacleGrid[i][j] = obstacleGrid[i-1][j] + obstacleGrid[i][j-1] else: obstacleGrid[i][j] = 0