[LeetCode 63]Unique Paths II

来源:互联网 发布:淘宝上的aj哪家是正品 编辑:程序博客网 时间:2024/05/16 04:51

题目链接:unique-paths-ii


/** * Follow up for "Unique Paths":Now consider if some obstacles are added to the grids. How many unique paths would there be?An obstacle and empty space is marked as 1 and 0 respectively in the grid.For example,There is one obstacle in the middle of a 3x3 grid as illustrated below.[  [0,0,0],  [0,1,0],  [0,0,0]]The total number of unique paths is 2.Note: m and n will be at most 100. * */public class UniquePathsII {//43 / 43 test cases passed.//Status: Accepted//Runtime: 196 ms//Submitted: 0 minutes ago    static int uniquePathsII(int[][] obstacleGrid) {        int n = obstacleGrid[0].length;        int m = obstacleGrid.length;    int[][] paths = new int[m][n];        paths[m - 1][n - 1] = (obstacleGrid[m - 1][n -1] == 0) ? 1 : 0;                for (int i = n - 2; i >= 0; i--) {        if(obstacleGrid[m - 1][i] == 1) paths[m - 1][i] = 0;        else paths[m - 1][i] = paths[m - 1][i + 1];}                for (int i = m - 2; i >= 0; i--) {        if(obstacleGrid[i][n - 1] == 1) paths[i][n - 1] = 0;        else paths[i][n - 1] = paths[i + 1][n - 1];}                for(int j = n - 2; j >= 0; j --)        for(int i = m - 2; i >= 0; i --) {        if(obstacleGrid[i][j] == 1) paths[i][j] = 0;        else paths[i][j] = paths[i + 1][j] + paths[i][j + 1];        }                return paths[0][0];     }public static void main(String[] args) {System.out.println(uniquePathsII(new int[][]{{0, 0, 0}, {0, 1, 0},{0, 0, 0},}));System.out.println(uniquePathsII(new int[][]{{0, 0}, {1, 1},{0, 0},}));}}


0 0
原创粉丝点击