LeetCode 63 不同路徑 II

2021-09-30 20:05:57 字數 1383 閱讀 3729

乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

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

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

說明:m 和 n 的值均不超過 100。

示例 1:

輸入:[

[0,0,0],

[0,1,0],

[0,0,0]

]輸出: 2

解釋:3x3 網格的正中間有乙個障礙物。

從左上角到右下角一共有 2 條不同的路徑:

1. 向右 -> 向右 -> 向下 -> 向下

2. 向下 -> 向下 -> 向右 -> 向右

此題和62題類似。只不過要多加乙個判斷。判斷是否是障礙物,如果是障礙物就跳過。

class

solution

:def

uniquepathswithobstacles

(self, obstaclegrid)

:"""

:type obstaclegrid: list[list[int]]

:rtype: int

"""m,n =

len(obstaclegrid)

,len

(obstaclegrid[0]

) res =[[

0]*n for i in

range

(m)]

#與一點在一行或者一列。

for i in

range

(m):

if obstaclegrid[i][0

]==1:

#判斷是障礙物就跳過不操作

break

res[i][0

]=1#不是障礙物就複製1

for j in

range

(n):

if obstaclegrid[0]

[j]==1:

break

res[0]

[j]=

1for i in

range(1

,m):

for j in

range(1

,n):

if obstaclegrid[i]

[j]==0:

# 如果不是障礙物就進行迭代操作

res[i]

[j]= res[i-1]

[j]+ res[i]

[j-1

]return res[m-1]

[n-1

]

LeetCode63 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...

LeetCode 63 不同路徑

看到這個題目的時候想到的是通過深度優先搜尋演算法進行求解,找到每一條能夠到達finish的路徑,並計數 1,最後得出的計數值即為解。程式設計後提交對於部分測試用例超時,程式如下 class solution if x 1 n 1 if y 1 m 1 int uniquepathswithobsta...

Leetcode 63 不同路徑

描述 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說...