LeetCode 0063 Unique Paths II
阿新 • • 發佈:2022-04-06
1. 題目描述
2. Solution 1
1、思路分析
DP
1. 狀態定義
dp[i][j] 表示 到達grid[i][j]的路徑數
2. 初始狀態
dp[row][0] = 1 row in [0, rows]
dp[0][col] = 1 col in [0, cols]
3. 轉態轉移方程
dp[i][j] = dp[i-1][j] + dp[i][j - 1]
特別地,當obstacleGrid[i][j] = 1,意味著此路不通,dp[i][j] = 0
2、程式碼實現
package Q0099.Q0063UniquePathII; /* DP 1. 狀態定義 dp[i][j] 表示 到達grid[i][j]的路徑數 2. 初始狀態 dp[row][0] = 1 row in [0, rows] dp[0][col] = 1 col in [0, cols] 3. 轉態轉移方程 dp[i][j] = dp[i-1][j] + dp[i][j - 1] 特別地,當obstacleGrid[i][j] = 1,意味著此路不通,dp[i][j] = 0 */ public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int width = obstacleGrid[0].length; int[] dp = new int[width]; dp[0] = 1; for (int[] row : obstacleGrid) { for (int j = 0; j < width; j++) { if (row[j] == 1) dp[j] = 0; else if (j > 0) dp[j] += dp[j - 1]; } } return dp[width - 1]; } }
3、複雜度分析
時間複雜度: O(n)
空間複雜度: O(n)