# 【leetcode】63. Unique Paths II

147人阅读 评论(0)

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[
[0,0,0],
[0,1,0],
[0,0,0]
]


The total number of unique paths is 2.

Note: m and n will be at most 100.

c++代码（3ms，26.70%）

class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m,n;
m = obstacleGrid.size();
n = obstacleGrid[0].size();
int i,j;
int path[m][n];
path[0][0] = obstacleGrid[0][0]==0?1:0;
for(i=1; i<n;i++){  //先处理第一行
if(obstacleGrid[0][i] == 1){
path[0][i]=0;
}else{
path[0][i] = path[0][i-1];
}
}
for(i=1;i<m;i++){  //处理第一列
if(obstacleGrid[i][0] == 1){
path[i][0] = 0;
}else{
path[i][0] = path[i-1][0];
}

}

for(i=1;i<m;i++){
for(j=1;j<n;j++){
if(obstacleGrid[i][j] == 1){
path[i][j]=0;
}else{
path[i][j] = path[i-1][j] + path[i][j-1];
}
}
}

return path[m-1][n-1];
}
};

c++代码2（3ms）

class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m,n;
m = obstacleGrid.size();
n = obstacleGrid[0].size();
int i,j;
vector<vector<int> > path(m+1, vector<int>(n+1, 0));
path[0][1] = 1;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
if(!obstacleGrid[i-1][j-1]){
path[i][j] = path[i-1][j] + path[i][j-1];
}
}
}//for
return path[m][n];
}
};

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：200094次
• 积分：4066
• 等级：
• 排名：第8844名
• 原创：229篇
• 转载：0篇
• 译文：0篇
• 评论：74条
评论排行
最新评论