代码随想录刷题记录day36 整数拆分+不同的二叉搜索树
创始人
2024-03-22 01:37:37
0

代码随想录刷题记录day36 整数拆分+不同的二叉搜索树

参考:代码随想录

343. 整数拆分

在这里插入图片描述

思想

一个数可以被拆分成2个数或者3个及以上的数。

dp[i]表示拆分i以后,得到的最大的乘积

拆分成两个数 j和i-j,拆分成三个数及以上 j 和dp[i-j],dp[i-j]表示继续拆分i-j 得到的最大的成绩

那么只要遍历j,就能把所有的拆分情况都给包含进来。

在某一轮遍历中

dp[i]=max(i*(i-j),j*dp[i-j])

由于j是遍历了每一种情况,所以dp[i]还是要取最大值的

代码

public int integerBreak(int n) {//dp[i]: 表示把i拆分得到的最大的乘积//dp[i] 可以从两个方向计算而来// 1. 遍历j dp【i】=j*dp【i-j】 把i拆分成2个以上//2.   遍历j dp【i】=j*(i-j) 就把i拆分成两个//dp[i]=max(dp【i】=j*dp【i-j】,dp【i】=j*(i-j))//所以递推公式:dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j});////那么在取最大值的时候,为什么还要比较dp[i]呢?////因为在递推公式推导的过程中,每次计算dp[i],取最大的而已。>>>>>???????//还要再取一次max  因为j是循环了  j取一个值 只是得到了dp【i】的一种可能int[] dp=new int[n+1];dp[2]=1;//把2 拆分的最大乘积是1//todo 遍历顺序//确定遍历顺序,先来看看递归公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));////dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]。////枚举j的时候,是从1开始的。i是从3开始,这样dp[i - j]就是dp[2]正好可以通过我们初始化的数值求出来。////所以遍历顺序为:for (int i = 3; i <= n; i++) {for (int j = 1; j < i-1; j++) {dp[i]=Math.max(dp[i],Math.max(j*(i-j),j*dp[i-j]));}}return dp[n];}

96. 不同的二叉搜索树

在这里插入图片描述

思想

1.dp[i]的含义,表示以1到i为头节点的个数,或者说有i个元素的二叉搜索树的数量

dp[3]=以1为头节点的数量+以2为头节点的数量+以3为头节点的数量

以1为头节点的数量=右子树2个元素的搜索树的数量*左子树0个元素的搜索树的数量=dp[2]*dp[0]

以2为头节点的数量=右子树1个元素的搜索树的数量*左子树1个元素的搜索树的数量=dp[1]*dp[1]

以3为头节点的数量=右子树0个元素的搜索树的数量*左子树2个元素的搜索树的数量=dp[0]*dp[2]

2.递推公式

dp[i]+=dp[i-j]*dp[j-1],其中j从1开始遍历,以j为头节点,那么左子树的节点数量就有j-1个,右子树的节点数量有i-j个

比如i=3,j=1时,左子树0个节点,右子树2个节点

3.初始化

0个节点也算是一种情况,dp[0]=1

4.遍历顺序

节点数为i的状态是依靠i之前的节点数的状态的,所以从前往后遍历

代码

class Solution {public int numTrees(int n) {//1.dp[i]的含义,表示以1到i为头节点的个数,或者说有i个元素的二叉搜索树的数量//dp[3]=以1为头节点的数量+以2为头节点的数量+以3为头节点的数量//以1为头节点的数量=右子树2个元素的搜索树的数量*左子树0个元素的搜索树的数量=dp[2]*dp[0]//以2为头节点的数量=右子树1个元素的搜索树的数量*左子树1个元素的搜索树的数量=dp[1]*dp[1]//以3为头节点的数量=右子树0个元素的搜索树的数量*左子树2个元素的搜索树的数量=dp[0]*dp[2]//递推公式 //dp[i]+=dp[i-j]*dp[j-1],其中j从1开始遍历,以j为头节点,那么左子树的节点数量就有j-1个,右子树的节点数量有i-j个//比如i=3,j=1时,左子树0个节点,右子树2个节点int [] dp=new int[n+1];//初始化dp[0]=1;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){dp[i]+=dp[i-j]*dp[j-1];}//System.out.println(dp[i]);}return dp[n];}
}

相关内容

热门资讯

海南逐步成为全球国际商事纠纷解... 本报讯(记者赖书闻)12月25日,记者从海南省政府获悉,海南作为全国5个国际商事仲裁中心建设试点地区...
律师进阶:直面对金钱的喜爱 律师这个职业,已经从光鲜亮丽的精英群体逐步走向了平常职业。但是想要做好律师,难度却一点也没减少。 律...
公安部有关部门下发通知要求 依... 本报北京12月26日讯 记者张晨 2026年元旦、春节将至,节令食品和假期餐饮进入消费高峰期。为切实...
重庆建工集团股份有限公司 关于... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
产能闲置vs退役潮来袭:动力电... 来源:财联社 中国新能源汽车市场连续多年的高速增长,正将动力电池回收产业推至一个关键的十字路口。 财...
*ST建艺[002789]关于... 本版导读 2025-12-27 2025-12-27 2025-12-27 2025...
诺普信定增与减持并行 年内诉讼... 【深圳商报讯】(记者 詹钰叶)深圳诺普信作物科学股份有限公司(下称诺普信)最近连发两条关于实际控制人...
释新闻|美国在公海扣押委内瑞拉... 继在加勒比海域集结大批军力并对涉嫌运送毒品的船只进行打击之后,特朗普如今又把目标对准了油轮。自12月...
亿晶光电科技股份有限公司关于累... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
重庆四方新材股份有限公司 关于... 证券代码:605122 证券简称:四方新材 公告编号:2025-080 重庆四方新材股份有限公司 关...