代码随想录第四十一天|Leetcode343. 整数拆分、Leetcode 96.不同的二叉搜索树
Leetcode343. 整数拆分
题目链接:Leetcode343. 整数拆分
dp做这个挺垃圾的,On2的时间和On的空间,用数学方法能改进到On和O1但是改不得。
class Solution {
public:
int integerBreak(int n) {
if(n==2) return 1;
vector<int> dp(n+1,0);
dp[2]=1;
for(int i=3;i<=n;i++){
for(int j=1;j<i;j++){
int tmp=max(j*(i-j),j*dp[i-j]);
dp[i]=max(dp[i],tmp);
}
}
return dp[n];
}
};
Leetcode 96.不同的二叉搜索树
题目链接:Leetcode 96.不同的二叉搜索树
奥数题一道,服了
class Solution {
public:
int numTrees(int n) {
if(n<=2) return n;
vector<int> dp(n+1,0);
dp[0]=1;
dp[1]=1;
dp[2]=2;
for(int i=3;i<=n;i++){
for(int j=1;j<=i;j++){
dp[i]+=dp[j-1]*dp[i-j];
}
}
return dp[n];
}
};