LeetCode #63 Unique Paths II

题目

Unique Paths II


解题方法

类似于上一题Unique Paths,这道题加了一个障碍物矩阵,需要注意的点是:

  1. 障碍物所在位置没有unique path,即值为0;
  2. 如果障碍物在第一行,那么障碍物之后的行的unique path都是0,列同理。

其他方面的做法与上一题类似,不再赘述。


代码

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        matrix = []
        row = []
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])

        for i in range(n):
            if not obstacleGrid[0][i]:
                if not i:
                    row.append(1)
                elif row[i-1]:
                    row.append(1)
                else:
                    row.append(0)
            else:
                row.append(0)
        matrix.append(row)

        for i in range(1, m):
            for j in range(n):
                if not j and not obstacleGrid[i][0]:
                    matrix.append([matrix[i-1][j]])
                elif not j and obstacleGrid[i][0]:
                    matrix.append([0])
                elif j and obstacleGrid[i][j]:
                    matrix[i].append(0)
                else:
                    matrix[i].append(matrix[i-1][j] + matrix[i][j-1])

        return matrix[-1][-1]
posted @ 2020-10-14 14:01  老鼠司令  阅读(80)  评论(0)    收藏  举报