原题地址:https://leetcode.cn/problems/unique-paths-ii/
题解
这道题和62. 不同路径 大同小异,唯一的不同就是增加了障碍物
设dp[r][c]为机器人达到坐标[r,c]可能的路径数,我们知道机器人只能通过[r-1,c]或者[r,c-1]来达到[r,c],所以对于路径数我们有:
考虑几种特殊情况:
- 对于障碍物而言,遇到可以直接将dp[r][c]设置为0并continue
- 当机器人的初始坐标即为障碍物时,机器人无法移动,可以直接返回0
时间复杂度:O(N)
空间复杂度:O(N)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if(obstacleGrid[0][0]==1)return 0; int[][] dp=new int[obstacleGrid.length][obstacleGrid[0].length]; dp[0][0]=1; for(int r=0;r<dp.length;r++){ for(int c=0;c<dp[r].length;c++){ if(obstacleGrid[r][c]==1)continue; dp[r][c]+=(r>0?dp[r-1][c]:0)+(c>0?dp[r][c-1]:0); } } return dp[dp.length-1][dp[0].length-1]; } }
|