9.9|day 2|整数拆分|不同的二叉搜索树

整数拆分:

复制代码
class Solution {
    public int integerBreak(int n) {
    int[] dp = new int[n+1];
    dp[2] =  1;
    for(int i = 3;i<=n;i++){
       for(int j = 1;j<=i-j;j++){
           dp[i] = Math.max(dp[i],Math.max(j*dp[i-j],j*(i-j)));
       }
    }//这里感觉要注意的就是j是我们要拆分的数,所以不会是dp[j]*dp[i-j],这种情况在代码的进行中会进行
       //因为j是从小到大进行的,拆分j的情况已经计算过了
        //感觉智商有点不够
        //从定义上来理解吧:j*dp[i-j]是将一个数拆分成两个及两个数以上,而dp[i-j]*dp[j]是将一个数默认拆分成四个数以上
        //前一种情况包括后一种,好像懂了
    return dp[n];
    }
}
复制代码
class Solution {
    public int numTrees(int n) {
    int[] dp = new int[n+1];
    dp[0] = 1;
    dp[1]  =1;//因为n的取值问题,所以不能写dp[2]
    for(int i = 2;i<=n;i++){
        for(int j  =1;j<=i;j++){
            ///dp[j-1]代表以j为头节点的左子树的最大二叉搜索树
            //dp[i-j]就是比j大的数,i是总数
            dp[i] += dp[j-1]*dp[i-j];
        }
    }
    return dp[n];
    }
}
相关推荐
Jack203 小时前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树5 小时前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE21221 小时前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE21221 小时前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术1 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦1 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户497863050731 天前
(一)小红的数组操作
算法·编程语言
怕浪猫1 天前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕1 天前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法