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];
};