乙個機械人位於乙個 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. 向下 -> 向下 -> 向右 -> 向右
該題是在不同路徑1中新增了乙個設定障礙的條件,也就是在路徑**現障礙位置的需要去除。
示例1中將0和1填入**的話,第二的**時將有障礙的改為0,沒有障礙的改為1,第三**是計算最終的路徑數。
如果能轉換成第三個**的話,那麼我們就可以用類似不同路徑1中的方式動態規劃方法求解,這裡提煉出的條件是,如果有障礙的話,當前位置設定為0,沒有障礙的話,還是當前位置相鄰左邊和上面兩個數的和。
邊界問題,如果第一行或者第一列有個位置存在障礙,那麼在此位置以後或者以下的路徑都是要拋棄的或者可以認為也是存在障礙的,特殊情況,如果第一行的第乙個為障礙,那麼路徑為0;
class
solution
if(j -
1>=
0&& obstaclegrid[i]
[j -1]
==0)}
}return a[m-1];}}
LeetCode 第63題 不同路徑
不同路徑 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示...
LeetCode63題 不同路徑2
思路 這道題與leetcode62題幾乎完全相同,只是在62題的基礎上增加了 障礙 限制。因為只能向右和向下移動,那麼容易想到,如果某一處 i,j 有障礙,那麼它右側的 i,j 1 位置只能經過 i 1,j 1 到達。因此 i,j 1 的值用 i 1,j 1 代替即可。如果乙個位置 i,j 的上邊和...
LeetCode63 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...