Easy to understand JAVA, in place solution


  • 0
    L
    public class Solution {
        public int uniquePathsWithObstacles(int[][] obstacleGrid) {
            if(obstacleGrid[0][0] == 1) return 0;
            int m = obstacleGrid.length;
            int n = obstacleGrid[0].length;
            obstacleGrid[0][0] = 1;
            
            //initialize 
            for(int i = 1; i < m ; i++) {
                if(obstacleGrid[i][0] == 1) obstacleGrid[i][0] = 0;
                else obstacleGrid[i][0] = obstacleGrid[i-1][0]; 
            }
            for(int i = 1; i < n; i++) {
                if(obstacleGrid[0][i] == 1) obstacleGrid[0][i] = 0; 
                else obstacleGrid[0][i] = obstacleGrid[0][i-1];
            }
            
            for(int i = 1; i < m; i++) {
                for(int j = 1; j < n; j++) {
                    if(obstacleGrid[i][j] == 1) obstacleGrid[i][j] = 0;
                    else obstacleGrid[i][j] = obstacleGrid[i-1][j] + obstacleGrid[i][j-1];
                }
            }
            return obstacleGrid[m-1][n-1];
        }
    }
    

Log in to reply
 

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