【leetcode】63. Unique Paths II【java】

来源:互联网 发布:ubuntu如何卸载samba 编辑:程序博客网 时间:2024/06/16 11:17

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.


public class Solution {    public int uniquePathsWithObstacles(int[][] obstacleGrid) {        //方法1:动态规划,使用二维数组        if (obstacleGrid == null || obstacleGrid.length == 0 || obstacleGrid[0].length == 0){            return 0;        }        int m = obstacleGrid.length;        int n = obstacleGrid[0].length;        int[][] paths = new int[m][n];        for (int i = 0; i < n; i++){            if (obstacleGrid[0][i] != 1){                paths[0][i] = 1;            } else{                break;            }        }        for (int j = 0; j < m; j++){            if (obstacleGrid[j][0] != 1){                paths[j][0] = 1;            } else {                break;            }        }        for (int i = 1; i < m; i++){            for (int j = 1; j < n; j++){                if (obstacleGrid[i][j] != 1){                    paths[i][j] = paths[i-1][j] + paths[i][j-1];                } else {                    paths[i][j] = 0;                }            }        }        return paths[m-1][n-1];                        // //方法2:使用一维数组  同样是动态规划的思想        // if (obstacleGrid == null || obstacleGrid.length == 0 || obstacleGrid[0].length == 0){        //     return 0;        // }        // int[] res = new int[obstacleGrid[0].length];        // res[0] = 1;        // for (int i = 0; i < obstacleGrid.length; i++){        //     for (int j = 0; j < obstacleGrid[0].length; j++){        //         if (obstacleGrid[i][j] == 1){        //             res[j] = 0;        //         }        //         else{        //             if (j > 0)        //                 res[j] += res[j - 1];        //         }        //     }        // }        // return res[obstacleGrid[0].length - 1];    }}


0 0
原创粉丝点击