LeetCode-063-不同路徑II
一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。
現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?
網格中的障礙物和空位置分別用 1 和 0 來表示。
示例 1:
輸入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
輸出:2
解釋:
3x3 網格的正中間有一個障礙物。
從左上角到右下角一共有 2 條不同的路徑:
- 向右 -> 向右 -> 向下 -> 向下
- 向下 -> 向下 -> 向右 -> 向右
示例 2:
輸入:obstacleGrid = [[0,1],[0,0]]
輸出:1
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/unique-paths-ii
解題思路
和上一題不同路徑思路基本一致
但是多了障礙判斷
並且為了節省空間, 採用一維滾動陣列來代替二維陣列
dp[j] += dp[j - 1]
相當於將[i - 1][j]
的結果+= [i][j - 1]
然後賦給[i][j]
因為矩陣中每個格子的路徑數只需要看上方或者左方
所以兩層迴圈時, 每次子迴圈時一維陣列中原有的值代表了該位置i, j
的上方i - 1, j
的路徑數
然後再加上一維陣列中元素的前一個元素的路徑, 代表了加上i, j - 1
的路徑
最後返回一維陣列最後一個元素
程式碼
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
if (obstacleGrid[0][0] == 1) {
return 0;
}
int m = obstacleGrid.length;
int n = obstacleGrid[0].length;
int[] dp = new int[n];
dp[0] = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (obstacleGrid[i][j] == 1) {
dp[j] = 0;
continue;
}
if (j >= 1) {
// 相當於將[i - 1][j]的結果 += [i][j - 1]然後賦給[i][j]
// 滾動陣列
dp[j] += dp[j - 1];
}
}
}
return dp[n - 1];
}
}
相關文章
- (39/60)不同路徑、不同路徑Ⅱ
- 程式碼隨想錄演算法訓練營第39天 | 62.不同路徑 、63. 不同路徑 II演算法
- Day 36 | 62.不同路徑 、 63. 不同路徑 II 、343. 整數拆分、96.不同的二叉搜尋樹
- 62. 不同路徑
- 【Leetcode】62. 不同路徑LeetCode
- LeetCode-62-不同路徑LeetCode
- 程式碼隨想錄演算法訓練營第36天 | 動態規劃基礎2:62.不同路徑、63.不同路徑 II演算法動態規劃
- 39天【程式碼隨想錄演算法訓練營34期】第九章 動態規劃part02(● 62.不同路徑 ● 63. 不同路徑 II )演算法動態規劃
- 05_不同路徑2(帶障礙物版)
- 程式碼隨想錄day34 || 62 不同路徑,63 不同路徑||,343整數拆分,96 不同搜尋二叉樹二叉樹
- LeetCode - 113 - 路徑總和 IILeetCode
- 遷移資料庫的檔案到不同路徑(轉)資料庫
- 兩個相同路徑、不同包、相同名稱類載入
- nginx同一埠配置代理不同路徑下的檔案Nginx
- Leetcode——113. 路徑總和 IILeetCode
- LeetCode-113-路徑總和 IILeetCode
- 113. 路徑總和 II mark
- 【動態規劃】用一維和二維解決不同路徑動態規劃
- Python結合檔名稱將多個檔案複製到不同路徑下Python
- Day18 | 513. 找樹左下角的值 | 112.路徑總和、113.路徑總和ii
- 每日一道演算法題--leetcode 113--路徑總和II--python演算法LeetCodePython
- Range Addition II 範圍求和 II
- 杉數科技:不走捷徑的“解”題高手
- Hackable: II
- (原創) 如何破解Quartus II 7.2 SP1? (IC Design) (Quartus II) (Nios II)iOS
- 雲遊戲漸入佳境,眾玩家同行不同路遊戲
- 微博、虎牙挺進興趣社群:同行不同路
- Ignatius and the Princess II
- Reflective Journal II
- Bracket Sequences IIRacket
- Collecting Numbers II
- 學習人工智慧不走捷徑,走大道的方式人工智慧
- canvas 實現光線沿不規則路徑運動Canvas
- 劍指 Offer 14- II. 剪繩子 II
- 讓AI不神祕也不神話 AI落地實踐路徑與2大必填坑AI
- Spiral-matrix-ii
- 設計模式II設計模式
- nginx代理返回靜態檔案中路徑不帶埠的問題Nginx