代码随想录第41天| 343.整数拆分,96.不同的二叉搜索树

news2025/1/23 17:27:57

 343.整数拆分

这道题全程懵逼

343. 整数拆分

class Solution {
    public int integerBreak(int n) {
        //推论一: 若拆分的数量 a 确定, 则 各拆分数字相等时 ,乘积最大。
        //推论二: 将数字 n尽可能以因子 3等分时,乘积最大。
        /**
        拆分规则:

最优: 3 。把数字 n 可能拆为多个因子 3 ,余数可能为 0,1,2 三种情况。
次优: 2。若余数为 2 ;则保留,不再拆为 1+1 。
最差: 1 。若余数为 1 ;则应把一份 3+1 替换为 2+2 ,因为 2×2 > 3×1
*/

        if(n<=3){return n-1;}
        int a=n/3;
        int b=n%3;
        if(b==0){return (int)Math.pow(3,a);}
        if(b==1){return (int)Math.pow(3,a-1)*4;}//当b==1,将一个1+3转换为2+2,因此返回3的(a-1)次方*4
        return (int)Math.pow(3,a)*2;//

    }
}

96.不同的二叉搜索树

元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量

元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量

元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量

有2个元素的搜索树数量就是dp[2]。

有1个元素的搜索树数量就是dp[1]。

有0个元素的搜索树数量就是dp[0]。

所以dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2]

如图

1.确定dp数组(dp table)以及下标的含义

dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]

2.确定递推公式

dp[i] += dp[j - 1] * dp[i - j]; ,j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量

3.dp数组如何初始化

初始化,只需要初始化dp[0]就可以了,推导的基础,都是dp[0]。

4.确定遍历顺序

首先一定是遍历节点数,从递归公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,节点数为i的状态是依靠 i之前节点数的状态。

5.举例推导dp数组

n为5时候的dp数组状态如图:

 这道题的时候想着这里的二叉树有点像是二叉搜索树

 代码实现

class Solution {
    public int numTrees(int n) {
        //这道题应该是平衡二叉树
        //1到n  dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]。、
        //初始化dp
        int[] dp=new int[n+1];
        //初始化0个节点和1个节点的情况
        dp[0]=1;
        dp[1]=1;
        for(int i=2;i<=n;i++){
            for(int j=1;j<=i;j++){
                //对于第i个节点,需要考虑1作为根节点直到i作为根节点的情况,所以需要累加
                //一共i个节点,对于根节点j时,左子树的节点个数为j-1,右子树的节点是i-j,相加起来就是i(把根节点算进去)
                dp[i]+=dp[j-1]*dp[i-j];
            }
        }
        return dp[n];

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/996266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElementPlus·面包屑导航实现

面包屑导航 使用vue3中的UI框架elementPlus的 <el-breadcrumb> 实现面包屑导航 <template><!-- 面包屑 --><div class"bread-container" ><el-breadcrumb separator">"><el-breadcrumb-item :to"{ path:/ }&quo…

apt安装yum

配置apt国内镜像源 /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ trusty-…

19 螺旋矩阵

螺旋矩阵 题解1 循环&#xff08;4个标志——根据顺时针&#xff09;题解2 方向 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 提示&#xff1a; - m matrix.length - n matrix[i].length - 1 < m, n <…

LVS NAT模式负载均衡群集部署

目录 1 群集(集群) cluster 1.1 群集的类型 2 LVS的工作模式及其工作过程 2.1 NAT模式&#xff08;VS-NAT&#xff09; 2.2 直接路由模式&#xff08;VS-DR&#xff09; 2.3 IP隧道模式&#xff08;VS-TUN&#xff09; 3 LVS-NAt 模式配置步骤 3.1 部署共享存储 3.2 配…

【全网最全protobuf中文版教程】

protocal buffer Notes 文章目录 protocal buffer Notes为什么是ProtoBufprotoBuf数据要素字段编号标签字段类型标量枚举复合类型mapgroup 导入其他消息类型编码解码编码解码 proto生成文件 为什么是ProtoBuf 通常&#xff0c;程序运行时产生的一些结构化数据会经历存储或者与…

基于Java+SpringBoot+Vue校园求职招聘系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

docker系列(2) - 常用命令篇

文章目录 2. docker常用命令2.1 参数说明(tomcat案例)2.2 基本命令2.3 高级命令2.4 其他 2. docker常用命令 2.1 参数说明(tomcat案例) 注意如果分成多行&#xff0c;\后面不能有空格 # 拉取运行 docker run \ -d \ -p 8080:8080 \ --privilegedtrue \ --restartalways \ -m…

docker系列(5) - docker仓库

文章目录 5 docker仓库5.1 创建命名空间5.2 创建镜像仓库5.3 设置访问凭证5.3 镜像仓库命令信息5.4 登录阿里云上传镜像5.5 拉取镜像运行5.6 私有仓库(docker Registry)5.6.1 安装docker registry5.6.2 准备镜像5.6.2 本地私服仓库5.6.3 推送到私服仓库5.6.4 拉取私服镜像 5 do…

信息系统项目管理师(第四版)教材精读思维导图-第十三章项目资源管理

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图源文件 13.1 管理基础 13.2 管理过程 13.3 规划资源管理 13.4 估算活动资源 13.5…

2023/9/10周报

目录 摘要 文献阅读1 1、标题和提出问题 2、小波变换 3、Encoder和Decoder 4、模型结构 5、实验 文献阅读2 1、标题和提出问题 2、高斯扩散模型和烛台图 3、研究方法 4、实验准备 5、实验结果 总结 摘要 本周阅读了两篇论文&#xff0c;其一为一种基于空气质量时…

数字图像滤波的本质

一、说明 在数字时代&#xff0c;图像是我们交流和表达不可或缺的一部分。从社交媒体到医学成像&#xff0c;图像的质量和内容非常重要。这就是图像过滤和卷积领域介入的地方&#xff0c;为我们提供了一个转换和完善这些视觉叙事的工具包。 图像过滤不仅仅是让照片看起来更好;这…

浙大MBA二战上岸:笔试备考辛酸路

作为一个即将进入三十而立年纪的考生&#xff0c;我深切感受到了压力的存在。在决定是否要将这么多时间和精力投入到考研中时&#xff0c;我开始思考这决定是否值得。毕竟参加二战考试需要付出大量的时间成本和努力。最终经过反复权衡和深思熟虑&#xff0c;我认为这是值得的。…

总结 - 组件通用封装思路(组件封装)

组件封装&#xff1a; 1. 不变&#xff1b; 2. 变&#xff1a;①prop ②slot插槽 详细总结在文末。 --------------------------------------------------------------------------------------------------- 问题&#xff1a;结构相似&#xff0c;内容不同 --》 可以用组…

注意力机制讲解与代码解析

一、SEBlock(通道注意力机制) 先在H*W维度进行压缩&#xff0c;全局平均池化将每个通道平均为一个值。 &#xff08;B, C, H, W&#xff09;---- (B, C, 1, 1) 利用各channel维度的相关性计算权重 (B, C, 1, 1) --- (B, C//K, 1, 1) --- (B, C, 1, 1) --- sigmoid 与原特征相…

【Linux】粗谈权限

背景知识 我们日常口头讲的Linux操作系统&#xff0c;狭义来说只是指它的内核&#xff0c;广义上来说指它的内核加外壳&#xff08;shell&#xff0c;配套的程序&#xff09;。 那么为什么一定要有外壳呢&#xff1f;shell外壳主要有以下两个功能 1.命令行解释器 将用户输入的…

趣解设计模式之《办理入职这么难吗?》

〇、小故事 小王大学毕业&#xff0c;经过大学期间的刻苦学习&#xff0c;终于成功的面试上了一家公司。按照约定的时间&#xff0c;小王兴高采烈的来到公司前台去办理入职手续。 “您好&#xff0c;我是来办理入职手续的”小王对前台妹妹说&#xff0c;前台妹妹看都没看他一…

管理类联考——数学——汇总篇——知识点突破——路程

⛲️ 路程问题是根据速度、时间、路程之间的关系&#xff0c;研究物体相向、相背和同向运动的问题&#xff0c;解决路程问题常用方法&#xff1a; &#xff08;1&#xff09;分解。将综合性的题目先分解成若干个基本题&#xff0c;再按其所属类型&#xff0c;直接利用基本数量…

SpringBoot结合MyBatis实现多数据源配置

SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作&#xff0c;首先需要搭建Mybatis的运行环境。 由于是多数据源&#xff0c;也就是要有多个数据库&#xff0c;所以&#xff0c;我们创建两个测试数据库&#xff0c;分别是…

Alibaba(获得店铺的所有商品) API接口

为了进行电商平台 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个alibaba应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载alibaba API的SDK并掌握基本的API基础知识和调用 4&#xff09;利…

持安-大连万达集团零信任项目入选中国信通院2023零信任优秀案例

2023年8月25日&#xff0c;以“链接云端&#xff0c;可信而安”为主题的“2023首届SecGo云和软件安全大会”在京隆重召开。会上&#xff0c;中国信息通信研究院重磅揭晓了“安全守卫者计划”优秀案例评选结果。 零信任办公安全技术创新企业持安科技&#xff0c;与用户大连万达…