63. 不同路径 II

218 阅读1分钟

63. 不同路径 II

if (obstacleGrid[0][j] === 1) { 边界障碍物,则后续位置都为0

if (obstacleGrid[0][j] === 1) {边界障碍物,则后续位置都为0

if (obstacleGrid[i][j] === 1){ 非边界障碍物,则设置为0,其他的按照以前的要求就行

var uniquePathsWithObstacles = function (obstacleGrid) {
    var m = obstacleGrid.length
    var n = obstacleGrid[0].length
    var dp = new Array(m).fill().map(() => new Array(n).fill(0))
    var num1 = 1
    var num2 = 1
    for (var i = 0; i < m; i++) {
        if (obstacleGrid[i][0] === 1) {
            num1 = 0
        } 
        dp[i][0] = num1
    }
    for (var j = 0; j < n; j++) {
        if (obstacleGrid[0][j] === 1) {
            num2 = 0
        } 
        dp[0][j] = num2
    }
    for (var i = 1; i < m; i++) {
        for (var 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]
};