LeetCode 62/63 不同路径(二)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
class Solution {
public int uniquePaths(int m, int n) {
int[][] f = new int[n+10][m+10];
f[0][0]=1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i-1>=0) f[i][j] += f[i-1][j];
if(j-1>=0) f[i][j] += f[i][j-1];
}
}
return f[n-1][m-1];
}
}
LeetCode 63 不同路径二
突然发现,下一题是这一题的变形
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
//有障碍了哦
int n = obstacleGrid.length;
int m = obstacleGrid[0].length;
int[][] f = new int[110][110];
f[0][0] = 1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(obstacleGrid[i][j]==1){
f[i][j] = 0;
continue;
}
if(i-1>=0 && obstacleGrid[i - 1][j] == 0) f[i][j] += f[i-1][j];
if(j-1>=0 && obstacleGrid[i][j - 1] == 0) f[i][j] += f[i][j-1];
}
}
return f[n-1][m-1];
}
}

浙公网安备 33010602011771号