【leetcode】63. (Medium)Unique Pathes II
阿新 • • 發佈:2018-11-22
解題思路:
和Unique Path差不多
提交程式碼:
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m=obstacleGrid.length;int n=obstacleGrid[0].length;
int[][] dp=new int[m][n];
// initialize the bottom row
for(int i=n-1;i>=0;i--) {
if(obstacleGrid[ m-1][i]==1) {
for(int j=i;j>=0;j--)
dp[m-1][j]=-1;
break;
}
dp[m-1][i]=1;
}
// initialize the right column
for(int i=m-1;i>=0;i--) {
if(obstacleGrid[i][n-1]==1) {
for(int j=i;j>=0;j--)
dp[j][n-1]=-1;
break;
}
dp[ i][n-1]=1;
}
for(int i=m-2;i>=0;i--) {
for(int j=n-2;j>=0;j--) {
if(obstacleGrid[i][j]==1) {
dp[i][j]=-1;
continue;
}
dp[i][j]=0;
if(dp[i+1][j]!=-1) dp[i][j]+=dp[i+1][j];
if(dp[i][j+1]!=-1) dp[i][j]+=dp[i][j+1];
}
}
return dp[0][0]>0?dp[0][0]:0;
}
}
執行結果: