LEETCODE | PYTHON | 63 | 不同路径Ⅱ

LEETCODE | PYTHON | 63 | 不同路径Ⅱ

1. 题目

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-paths-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 代码

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

        res = [[0]*col for i in range(row)]

        for i in range(row):
            for j in range(col):
                if obstacleGrid[i][j] == 1:
                    res[i][j]=0
                else:
                    if i==0 and j==0:
                        res[i][j]=1
                    elif i!=0 and j==0:
                        res[i][j] = res[i-1][j]
                    elif i==0 and j!=0:
                        res[i][j] = res[i][j-1]
                    else:
                        res[i][j] = res[i][j-1]+res[i-1][j]
                        
        return res[row-1][col-1]
    

3. 相关知识

(1) 采用动态规划
(2) 与62题相似,障碍点的路径数目为0即可

你可能感兴趣的:(leetcode-python,leetcode,python,算法)