乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。這道題相比62,多了個障礙物的條件,因此在初始化狀態陣列時,要多一些判斷。比如在第一行,障礙物後的位置全部無法到達(機械人不能向上走),同樣在第一列,障礙物後的位置也無法到達(機械人不能向左走)機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?
網格中的障礙物和空位置分別用 1 和 0 來表示。
說明:m 和 n 的值均不超過 100。
示例 1:
輸入:[
[0,0,0],
[0,1,0],
[0,0,0]
]輸出: 2
解釋:3x3 網格的正中間有乙個障礙物。
從左上角到右下角一共有 2 條不同的路徑:
1.向右 -> 向右 -> 向下 -> 向下
2.向下 -> 向下 -> 向右 -> 向右
/**
* @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 ...