Unique Path II

来源:互联网 发布:数据库crow s foot图 编辑:程序博客网 时间:2024/06/06 07:09

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.

思路:相比于上一个题目,这个加了个条件,也就是初始化的时候,第一行和第一列,遇见1,就不再往后面赋1了,后面就是0。

然后进行计算的时候,遇见1,机器人根本无法到达,所以dp的array直接赋值0,这样再进行计算就可以得到结果,跟上一题比,只是稍微变化了一下。

public class Solution {     public int uniquePathsWithObstacles(int[][] obstacleGrid) {         int m = obstacleGrid.length;         int n = obstacleGrid[0].length;         int[][] dp = new int[m][n];         dp[0][0] = obstacleGrid[0][0] == 1 ? 0 : 1;         // init 1st row;         for(int i=1; i<n; i++){             if(obstacleGrid[0][i] == 1){                 dp[0][i] = 0;             } else {                 dp[0][i] = dp[0][i-1];             }         }                  // init 1st col;         for(int j=1; j<m; j++){             if(obstacleGrid[j][0] == 1) {                 dp[j][0] = 0;             } else {                 dp[j][0] = dp[j-1][0];             }         }                  // calculate matrix;         for(int i=1; i<m; i++){             for(int j=1; j<n; j++){                 if(obstacleGrid[i][j] == 1){                     dp[i][j] = 0;                 } else {                     dp[i][j] = dp[i-1][j] + dp[i][j-1];                 }             }         }         return dp[m-1][n-1];     } }




0 0
原创粉丝点击