[LeetCode]Unique Paths II

public class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int row = obstacleGrid.length;
        if (row == 0) {
            return 0;
        }
        int col = obstacleGrid[0].length;
        if (obstacleGrid[0][0] == 1) {
            return 0;
        }
        int[][] record = new int[row][col];
        record[0][0] = 1;
        for (int r = 1; r < row; r++) {
            if (obstacleGrid[r][0] == 1 || record[r - 1][0] == 0) {
            } else {
                record[r][0] = record[r - 1][0];
            }
        }
        for (int c = 1; c < col; c++) {
            if (obstacleGrid[0][c] == 1 || record[0][c - 1] == 0) {
            } else {
                record[0][c] = record[0][c - 1];
            }
        }
        for (int r = 1; r < row; r++) {
            for (int c = 1; c < col; c++) {
                if (obstacleGrid[r][c] == 1) {
                    record[r][c] = 0;
                } else {
                    record[r][c] = record[r - 1][c] + record[r][c - 1];
                }
            }
        }
        return record[row - 1][col - 1];
    }
}

 

posted @ 2015-12-04 16:42  Weizheng_Love_Coding  阅读(144)  评论(0编辑  收藏  举报