前端算法系列-动态规划02

51 阅读1分钟

62. 不同路径

var uniquePaths = function (m, n) {
    let arr = new Array(m).fill(new Array(n).fill(0))
    for (let i = 0; i < m ; i++) {
        for (let j = 0; j < n ; j++) {
            if (i === 0 || j === 0) {
                arr[i][j] = 1
            }
            else arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
        }

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

63. 不同路径 II

var uniquePathsWithObstacles = function (obstacleGrid) {
    //动态规划数组
    let arr = Array.from(Array(obstacleGrid.length + 1), () => Array(obstacleGrid[0].length + 1).fill(0))
    for (let i = 1; i < obstacleGrid.length + 1; i++) {
        for (let j = 1; j < obstacleGrid[0].length + 1; j++) {
            if(obstacleGrid[i-1][j-1] === 1){
                arr[i][j] = 0
                continue
            }
            if(i === 1 && j === 1){
                arr[i][j] = 1
            }else{
                arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
            }

        }
    }
    return arr[obstacleGrid.length][obstacleGrid[0].length]
};