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

提示

文章目录


一、整数拆分

对整数进行拆分,有两种方法得到dpi,一种是j * (i-j),另外一种是j * dpi-j,第二种方法相当于再次将i-j拆分,所以dpi需要取两者的最大值,同时j也是从1开始拆分的,i里面有小循环j,所以也要比较dpi,取最大值。

cpp 复制代码
class Solution {
public:
    int integerBreak(int n) {
        //1.确定dp数组和下标含义
        vector<int>dp(n+1);

        //2.确定递推公式

        //3.dp初始化
        dp[2] = 1;

        //4.遍历顺序
        for (int i = 3; i <= n; i++) {
            for (int j = 1; j <= i/2; j++) {
                dp[i] = max (dp[i], max(dp[i-j] * j, (i-j) * j));
            }
        }
        return dp[n];
    }
};

二、不同的二叉搜索树

有点难理解,主要还是找递推关系,建立递推公式

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

总结

欠的补完了,之后再忙也要抽出时间多看多写

学习时间90min。

学习资料:《代码随想录》

相关推荐
choumin19 分钟前
C程序能调用extern “C“声明的带默认参数的C++函数吗?
c语言·c++·extern c·默认参数
AmyLin_200139 分钟前
PDF 色彩保真工程实践【3】上手实践:工程结构、依赖集成与一键构建运行
c++·visualstudio·pdf·zlib·vcpkg·libtiff·cmyk
并不喜欢吃鱼1 小时前
从零开始 C++------ 十六.深度拆解 C++ 智能指针:unique_ptr/shared_ptr/weak_ptr 底层模拟、内存泄漏根治
开发语言·c++
不相心 -w-1 小时前
Cmake的基础用法
linux·开发语言·c++
白白白小纯1 小时前
每日算法day3—回文链表,链表分割
c语言·数据结构·算法·leetcode
撑伞的鱼99371 小时前
C++开发用什么AI编程工具效果好?2026年实测横评(附选型指南)
开发语言·c++·ai编程·cursor
手写码匠1 小时前
华为云Flexus+DeepSeek征文|Dify 构建企业级联网搜索 Agent:查询改写、多源检索与引用溯源实战
人工智能·深度学习·算法·aigc
七夜zippoe1 小时前
DolphinDB 能耗统计分析实战:报表生成、同比环比与定额对比
人工智能·算法·dolphindb·报表生成·能耗统计·定额对比
为啥全要学2 小时前
在大语言模型上使用 PPO 算法
人工智能·算法·语言模型
j7~2 小时前
【Linux】二十八.线程篇五《Linux多线程编程:线程同步之条件变量》---详解
linux·运维·c++·学习·条件变量·线程同步