代码随想录算法训练营第四十一天|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。

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

相关推荐
霍霍的袁2 分钟前
【C++11】左值右值引用与移动语义详细笔记(左值右值、右值引用、移动构造、移动赋值、引用折叠、万能转发)
c++·笔记·学习·visual studio
布莱克6055 分钟前
C++ 中 unordered_set 与 unordered_map 有什么不同?一篇讲透
开发语言·c++·哈希
小豆庄8 分钟前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
海清河晏11115 分钟前
加油站问题
数据结构·算法·leetcode
GG.WinGel27 分钟前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
艾iYYY34 分钟前
进程的状态
算法
秋天的怀念_David40 分钟前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法
鶴哥只手遮天44 分钟前
AFSIM 2.9.0 深度解析:架构、原理与工程实践-第 1 章 项目全景与代码地图
c++
CV爱数码44 分钟前
论文精读|RED-CNN:残差编解码网络,低剂量 CT 去噪的经典基线
网络·人工智能·算法·cnn·ct·重建·x-ray
充值内卷1 小时前
C++单文件迷宫游戏:TauriCPP 开发全记录
开发语言·c++·游戏