63 不同路徑 II(JS實現)

2021-10-07 04:02:09 字數 1088 閱讀 1306

乙個機械人位於乙個 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,多了個障礙物的條件,因此在初始化狀態陣列時,要多一些判斷。比如在第一行,障礙物後的位置全部無法到達(機械人不能向上走),同樣在第一列,障礙物後的位置也無法到達(機械人不能向左走)

/**

* @param obstaclegrid

* @return

*/var

uniquepathswithobstacles

=function

(obstaclegrid)

}let d =

;let pointx =-1

;//用來記錄第一行出現障礙物的位置

let pointy =-1

;//用來記錄第一列出現障礙物的位置

for(

let i=

0; i)else

if(i ===

0&& pointx >-1

&& j > pointx)

else

if(j ===

0&& pointy >-1

&& i > pointy)

else

}else}}

return d[m-1]

[n-1];

};

62 不同路徑63 不同路徑 II

62.不同路徑 動態規劃清晰步驟 1.定義dp陣列 2.初始化 3.迴圈填充 4.返回結果 class solution 4.返回結果 return dp m 1 n 1 動態規劃寫法2 內部解決初始化問題 class solution2 else if i 0 j 0 else if i 0 j ...

63 不同路徑 II

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

63 不同路徑 II

dfs深度優先 超出時間限制 class solution def uniquepathswithobstacles self,obstaclegrid list list int int if obstaclegrid return 0if obstaclegrid 0 0 1 return 0 ...