Leetcode练习(Python):数组类:第63题:一个机器人位于一个 m x n 网格的左上角 ,起始点在下图中标记为“Start” 。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角

题目:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

思路:

和没有障碍思路类似,将有障碍部分设置成1就好了

程序:

class Solution:

def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:

row = len(obstacleGrid)

column = len(obstacleGrid[0])

if row <= 0:

return 0

result = [[0] * (column + 1) for _ in range(row + 1)]

result[0][1] = 1

for index1 in range(1, row + 1):

for index2 in range(1, column + 1):

if obstacleGrid[index1 - 1][index2 - 1] == 0:

result[index1][index2] = result[index1 - 1][index2] + result[index1][index2 - 1]

output = result[-1][-1]

return output