代码随想录第35天 | ● 62.不同路径 ● 63. 不同路径 II

62.不同路径

/**
 * @param {number} m
 * @param {number} n
 * @return {number}
 */
   var uniquePaths = function(m, n) {
    // m只能小于n
     if(m>n)
       [m,n]=[n,m]
     let dp = new Array(m+1).fill(0).map(() => new Array(n+1).fill(1));
     dp[1][1]=1
     dp[1][2]=1
     for(let i=2;i<=m;i++){
         for(let j=2;j<=n;j++){
            dp[i][j]=dp[i-1][j]+dp[i][j-1]
           
         }
     }
     return dp[m][n]
};

第一想法

dp[i][j]=dp[i-1][j]+dp[i][j-1]

63. 不同路径 II

var uniquePathsWithObstacles = function(obstacleGrid) {
    const m = obstacleGrid.length
    const n = obstacleGrid[0].length
    const dp = Array(m).fill().map(item => Array(n).fill(0))

    for (let i = 0; i < m && obstacleGrid[i][0] === 0; ++i) {
        dp[i][0] = 1
    }

    for (let i = 0; i < n && obstacleGrid[0][i] === 0; ++i) {
        dp[0][i] = 1
    }

    for (let i = 1; i < m; ++i) {
        for (let j = 1; j < n; ++j) {
            dp[i][j] = obstacleGrid[i][j] === 1 ? 0 : dp[i - 1][j] + dp[i][j - 1]
        }
    }

    return dp[m - 1][n - 1]
};

想法

dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

代码随想录第35天 | ● 62.不同路径 ● 63. 不同路径 II_第1张图片


你可能感兴趣的:(代码随想录,javascript,算法,leetcode)