代码随想录算法训练营第四十一天 | 343.整数拆分、96. 不同的二叉搜索树。

Leetcode 343.整数拆分

题目链接:343.整数拆分

class Solution {
public:
    int integerBreak(int n) {
        vector<int> dp(n+1,0);
        dp[2] = 1;
        for(int i = 3; i <= n; i++){
            for(int j = 1; j <= i/2; j++)
                dp[i] = max(dp[i],max(j * (i - j), j * dp[i - j]));//两数积、拆分的积、原数积的最大值
        }
        return dp[n];
    }
};

Leetcode 96. 不同的二叉搜索树

题目链接:96. 不同的二叉搜索树

class Solution {
public:
    int numTrees(int n) {
        if(n <= 1)
            return n;
        vector<int> dp(n+1, 0);
        dp[0] = 1;
        for(int i = 1; i <= n; i++){
            for(int j = 0; j < i; j++){
                dp[i] += dp[j] * dp[i - j - 1];
            }
        }
        return dp[n];
    }
};

左子树*右子树累加

你可能感兴趣的:(代码随想录算法训练营十五期,算法)