LeetCode63題 不同路徑2

2021-09-07 05:58:49 字數 675 閱讀 4558

思路:這道題與leetcode62題幾乎完全相同,只是在62題的基礎上增加了「障礙」限制。因為只能向右和向下移動,那麼容易想到,如果某一處[i,j]有障礙,那麼它右側的[i,j+1]位置只能經過[i-1,j+1]到達。因此[i,j+1]的值用[i-1,j+1]代替即可。如果乙個位置[i,j]的上邊和左邊都是障礙的話,那麼這個位置肯定不會被任何乙個路徑經過,因此可以認為是"**"障礙(第一行和第一列特殊對待)。問題中用1表示障礙,但是1與路徑數1衝突,所以先將所有的1用-1代替。 然後先處理第一行和第一列的障礙、「**」障礙、非障礙。然後再迴圈處理非第一行或第一列的所有的障礙和「**」障礙以及非障礙。障礙和「**」障礙用-1填充,非障礙用路徑數填充。

在原陣列上直接操作

public int uniquepathswithobstacles(int obstaclegrid) 

memo[0][i] = 1;

}for (int i = 0; i < n; i++)

memo[i][0] = 1;

}for (int i = 1; i < n; i++) }}

return memo[n - 1][m - 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 來表示。說...