5/30/2014

41. Unique Paths II

public class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
       
        if (obstacleGrid[m-1][n-1]==1) return 0;
       
        int[][] res = new int[m][n];
        if (obstacleGrid[0][0]==1) return 0;
        res[0][0] = 1;
       
        for (int i=1; i<m; i++) {
            if (res[i-1][0]!=0 && obstacleGrid[i][0]!=1) res[i][0] = 1;
        }
       
        for (int j=1; j<n; j++) {
            if (res[0][j-1]!=0 && obstacleGrid[0][j]!=1) res[0][j] = 1;
        }
       
        for (int i=1; i<m; i++) {
            for (int j=1; j<n; j++) {
                if (obstacleGrid[i][j]!=1) res[i][j] = res[i-1][j] + res[i][j-1];
            }
        }
       
        return res[m-1][n-1];
    }
}

1 条评论:

  1. 1. res[0][0]
    2. res[0][1]...res[0][n-1]
    3. res[1][0]...res[m-1][0]
    4. res[i][j]

    回复删除