1. 程式人生 > 實用技巧 >leetcode刷題-62不同路徑2

leetcode刷題-62不同路徑2

題目

一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。

現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?

網格中的障礙物和空位置分別用10來表示。

思路

與61題的不同路徑幾乎相似,但在第一行和第一列陣列設定上,需要將有障礙物的格子,將其及其後面的方格都設為0

實現

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m 
= len(obstacleGrid) n = len(obstacleGrid[0]) matrix = [[0 for i in range(n)] for j in range(m)] x = False y = False for k in range(m): for j in range(n): if k < 1: if obstacleGrid[k][j] == 1 or x == True: x
= True if j == 0 : y = True else: matrix[k][j] = 1 elif j < 1: if obstacleGrid[k][j] == 1 or y == True: y = True else: matrix[k][j]
= 1 elif obstacleGrid[k][j] != 1: matrix[k][j] = matrix[k-1][j] + matrix[k][j-1] return matrix[m-1][n-1]