当前位置: 首页 > news >正文

343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分

设dp[i]表示拆分 数字i 出来的正整数相乘值最大的值

(i - j) * j,和dp[i - j] * j是获得dp[i]的两种乘法,在里面求最大值可以得到当前dp[i]的最大值,但是这一次的得出的最大值如果赋值给dp[i],可能没有没赋值的dp[i]大,具体例子的话,没想,只能说是覆盖了可能出现的问题。

所以是,dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j});

初始化,dp[0]=0,dp[1]=1或者dp[2]=1都可以,我觉得初始化dp[2]=1比较合适一些,同意卡哥的看法。

先便利要求的 i,然后再遍历 求最大值的 j

class Solution {public:int integerBreak(int n) {vector<int> dp(n + 1);dp[2] = 1;for (int i = 3; i <= n ; i++) {for (int j = 1; j <= i; j++) {dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));}}return dp[n];}};

96.不同的二叉搜索树

二叉搜索树是一个有序树

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉排序树

设dp[i]的含义是以1....到 i 构成的二叉搜索树为dp[i]种。

dp[i]该怎么从其他状态推出来呢?

联系起n=1和n=2与n=3之间构成的不同的二叉搜索数的数量关系。(很抽象我也不知道怎么联系起来的)

抽象后发现dp[i]=以1.....到i的各个节点为头节点的不同二叉搜索树之和

比如dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2],分别以1,2,3为头节点的不同二叉搜索树的数量加起来等于 以1....到 i 构成的二叉搜索树 总数 .

最后再抽象一层变成:(j从1开始)

dp[i] += dp[j - 1] * dp[i - j];

 初始化,依照二叉搜索树的定义,没有一个节点也可以算是二叉搜索树,所以

 dp[0] = 1;

 最后代码

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];}
};

 i 算从1开始推到i的dp[i]

 j 算从每一阶段的dp[i]内的1....i位置的不同头节点二叉搜索树之和,然后求出那个阶段的dp[i]

http://www.lryc.cn/news/194606.html

相关文章:

  • Vue3理解(9)
  • CRM系统中的销售漏斗有什么作用?
  • 项目(模块1:用户登陆流程分析)
  • 2023年中国商用服务机器人行业发展概况分析:国产机器人厂商向海外进军[图]
  • 千兆光模块和万兆光模块的适用场景有哪些
  • 2 files found with path ‘lib/armeabi-v7a/liblog.so‘ from inputs:
  • qt中json类
  • NeurIPS 2023 | AD-PT:首个大规模点云自动驾驶预训练方案
  • 设计模式-结构型模式
  • BUUCTF学习(7): 随便注,固网杯
  • 【文末福利】巧用Chat GPT快速提升职场能力:数据分析与新媒体运营
  • 院内导航系统厂商分析
  • MES系统作业调度
  • C++入门-引用
  • 问题:Qt中软件移植到笔记本中界面出现塌缩
  • NDK编译脚本:Android.mk or CMakeLists.txt
  • 低代码提速应用开发
  • Hi3516DV500 SVP_NNN添加opencv库记录
  • BIO实战、NIO编程与直接内存、零拷贝深入剖析
  • 计网第六章(应用层)(四)(电子邮件)
  • Lua篇笔记
  • 一种更具破坏力的DDoS放大攻击新模式
  • WordPress 常规设置页面调用媒体中心上传图片插入URL(新版可用)
  • Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo
  • LaunchView/启动页 的实现
  • windows安装npm教程
  • 网络端口验证
  • MongoDB 索引和常用命令
  • 【超详细】win10安装docker
  • JVM调优(一)