Java DP solution based on uniquePaths.


  • 0
    public class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m=obstacleGrid.length;
        int n=obstacleGrid[0].length;
        int[][] dp=new int[m][n];
        if(obstacleGrid[0][0]==1)   //if the first element is 1, then no paths.
            return 0;
        dp[0][0]=1;
        for(int i=1;i<m;i++){
            if(obstacleGrid[i][0]==1||dp[i-1][0]==0) //if the current element is 1, or the up element's path number is 0, then the current element's path number is set to 0;
                dp[i][0]=0;
            else dp[i][0]=1;
                  
        }
        for(int j=1;j<n;j++){
            if(obstacleGrid[0][j]==1||dp[0][j-1]==0)
                dp[0][j]=0;
            else dp[0][j]=1;
        }
        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                if(obstacleGrid[i][j]==1)
                    dp[i][j]=0;
                else dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
    

    }


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.