63. 不同路径 II

Smile_slime_47

原题地址: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];
}
}
Comments
On this page
63. 不同路径 II