代码随想录算法训练营第三十四天| 62.不同路径 、 63. 不同路径 II 、343.整数拆分 (可跳过)、96.不同的二叉搜索树

42 阅读1分钟

62.不同路径

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

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

63. 不同路径 II

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var uniquePathsWithObstacles = function(obstacleGrid) {
    var m = obstacleGrid.length;
    var n = obstacleGrid[0].length;
    const arr = Array.from({ length: m }, () => new Array(n).fill(0));
    for(let i=0;i<m;i++){
        if(obstacleGrid[i][0] ===1){
            break;
        }  
        arr[i][0] =1;                        
    }
    for(let i=0;i<n;i++){
        if(obstacleGrid[0][i] ===1){
            break;
        }
        arr[0][i] =1;
    }
    for(let i=1;i<m;i++){
        for(let j=1;j<n;j++){
            if(obstacleGrid[i][j] ===1){
                 arr[i][j] =0;

            }else{
                arr[i][j] =arr[i-1][j] + arr[i][j-1];
            }

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

343.整数拆分 (可跳过)

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

96.不同的二叉搜索树

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var numTrees = function(n) {
     var dp = new Array(n+1).fill(0);
        dp[0] = 1,dp[1]=1;
    for(let i=2;i<=n;i++){
        for(let j=1;j<=i;j++){
            dp[i] += dp[j-1]*dp[i-j];
        }
    }
    return dp[n];
};