【数组】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.

思路:

这道题跟Unique Paths的区别在于路线中有了障碍物,只需把障碍物处路线数变为0即可。

/**
 * @param {number[][]} obstacleGrid
 * @return {number}
 */
var uniquePathsWithObstacles = function(obstacleGrid) {
    var f=[];
    var m=obstacleGrid.length,n=obstacleGrid[0].length;
    for(var i=0;i<m;i++){
        f[i]=[];
    }
    
    for(var i=0;i<m;i++){
        if(obstacleGrid[i][0]==1){
            f[i][0]=0;
            for(var j=i+1;j<m;j++){
                    f[j][0]=0;
            }
            break
        }else{
            f[i][0]=1;
        }
    }
    
    for(var i=0;i<n;i++){
        if(obstacleGrid[0][i]==1){
            f[0][i]=0;
            for(var j=i+1;j<n;j++){
                f[0][j]=0;
            }
            break;
        }else{
            f[0][i]=1
        }
    }
    
    for(var i=1;i<m;i++){
        for(var j=1;j<n;j++){
            if(obstacleGrid[i][j]==1){
                f[i][j]=0;
            }else{
                f[i][j]=f[i-1][j]+f[i][j-1];
            }
        }
    }
    
    return f[m-1][n-1];
    
};

 

posted @ 2016-01-04 15:36  很好玩  阅读(163)  评论(0编辑  收藏  举报