day40 整数拆分 不同的二叉搜索树

题目1:343 整数拆分

题目链接:343 整数拆分

题意

将正整数n拆成k个正整数的和(k>=2)使整数的乘积最大化

尽量拆成若干个数值近似相等的数,这使用的是数学里面的思想:ab<=(a^2+b^2)/2 (当且仅当a=b时,ab乘积取最大值)

动态规划

动规五部曲:

1)dp数组及下标i的含义

dp[i]  对数值i进行拆分,得到的最大的乘积是dp[i]          

2)递推公式

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

自身,拆成两项,拆成3项及以上

3)dp数组初始化

dp[0] 没有意义   dp[0] = 0

dp[1]没有意义    dp[1] = 0

dp[2] = 1

4)遍历顺序

i从3开始遍历   从3开始拆

for(i=3;i<=n;i++) 

     for(j=1;j<=i/2;j++)//使用j拆分i

5)打印dp数组

代码

class Solution {
public:int integerBreak(int n) {//定义dp数组 vector<int> dp(n+1, 0);//dp数组初始化dp[0] = 0; //无意义dp[1] = 0; //无意义dp[2] = 1;//遍历顺序//从3开始拆分for(int i=3;i<=n;i++){for(int j=1;j<=i/2;j++)//使用j拆分i{dp[i] = max(dp[i],max(j*(i-j),j*dp[i-j]));//自己,拆成两项,拆成3项及以上}}return dp[n];}
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

题目2:96 不同的二叉搜索树

题目链接:96 不同的二叉搜索树

题意

由n个节点组成的的节点值从1到n互不相同的二叉搜索树的种类

首先确定二叉搜索树的性质,二叉搜索树就是一个有序数组,

可以组成最简单的二叉搜索树

动态规划

动规五部曲:

1)dp数组及下标i的含义

dp[i] : 1~i为节点(i个节点)可以组成dp[i]种不同的二叉搜索树

2)递推公式

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

代表以j为头节点,那么左子树一定有j-1个元素(因为元素是1-n),右子树有i-(j-1)-1(注意要减去头节点)  将1-n个元素各为头节点都遍历一遍,然后将这些情况累加起来

3)dp数组初始化

dp[0] = 1  左右子树有空的情况,符合二叉搜索树的定义

4)遍历顺序

根据递推公式,i的状态由i-1的状态推导,所以从小到大遍历

for(int i=1;i<=n;i++)

   for(int j=1;j<=i;j++){

}

5)打印dp数组

代码

class Solution {
public:int numTrees(int n) {//定义dp数组vector<int> dp(n+1,0);//初始化dp数组dp[0] = 1;//遍历for(int i=1;i<=n;i++){for(int j=1;j<=i;j++)//以i为头节点的二叉搜索树的个数,左子树从j-1开始一直到i-1变化{dp[i] += dp[j-1]*dp[i-j];}}return dp[n];}
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

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

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

相关文章

http升级https需要做什么

背景&#xff1a;随着现代网络时代的高速发展&#xff0c;网络安全方面的日益更新&#xff0c;实现网站https协议的数量也在不断增多&#xff0c;完善安全方面的因素也在逐步增加。 下面从最基础的网站http协议全面升级为https协议的流程做出说明。 目录 首先带大家一起先了解…

Unity类银河恶魔城学习记录9-1 9-2 P89,90 Character stats - Stat script源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Stat.cs using System.Collections; using System.Collections.Generic; us…

javascript:void(0);用法及常见问题解析

javascript:void(0);用法及常见问题解析 1. 简介 javascript:void(0); 是一种 JavaScript 代码,常用于以下几种情况: 创建一个空链接,点击后不会发生任何跳转或动作。 在需要返回值的地方,返回 undefined 值。 避免意外的副作用,例如在箭头函数中,如果函数体不使用括号…

【C++】---string的OJ题

【C】---string的OJ题 1.字符串转整形数字&#xff08;重要&#xff09;&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;思路展示&#xff08;3&#xff09;代码实现 2.字符串相加&#xff08;重要&#xff09;&#xff08;1&#xff09;题目描述&#xff08;2&am…

如何保护企业云上安全

近日&#xff0c;CrowdStrike发布了《2024年全球威胁报告》&#xff0c;揭示了网络攻击的最新趋势。报告指出&#xff0c;网络攻击生态系统仍在持续增长&#xff0c;CrowdStrike在2023年观察到了34个新的威胁参与者。同时&#xff0c;攻击者正越来越多地瞄准云环境&#xff0c;…

Docker Desktop将镜像存储位置从C盘迁移到其它盘

一、简述 Docker Desktop默认安装在C盘,默认镜像存储位置在 C:\用户\Administrator\AppData\Local\Docker\wsl Docker Desktop 通过WSL2启动,会自动创建2个子系统,分别对应2个 vhdx 硬盘映像文件。 可以命令行执行wsl --list -v 看到 二、迁移步骤 1、在Docker Desktop…

css之常用样式

展示样式一&#xff1a; <div class"showListBox"><div class"List" v-for"(i,index) in sealList" :key"index"> <div class"ListItemCon"><div class"ListItem-titleBox"><img src…

阿里云ACK的应用服务如何暴露公网并挂载域名

背景介绍 针对部署到阿里云ACK集群的应用服务&#xff0c;实际业务场景可能需要我们暴露其中的服务到公网并要求通过域名访问改服务&#xff0c;那具体在阿里云平台上如何实现呢 配置步骤 新建ack集群是后续工作的第一前提由于篇幅有限就不在本文赘述&#xff0c;如下是基本…

Conmi遇到的坑——禅道的PCDN

好家伙&#xff0c;悄悄在后台吃了七十多G流量&#xff0c;我把你当兄弟宣传&#xff0c;你把我当PCDN吸。 还纳闷今天创建个VUE项目怎么提示D盘没空间&#xff0c;明明留了几十G&#xff0c;好家伙&#xff0c;一下子全吸干了。 删了两个&#xff0c;还有一个

6N137SDM光电耦合器中文资料规格书PDF数据手册引脚图图片价格参数芯片概述

产品概述&#xff1a; 6N137M、HCPL2601M、HCPL2611M 单沟道和 HCPL2630M、HCPL2631M 双沟道包含一个 850 nm AlGaAS LED&#xff0c;与带有可调谐输出的极高速集成式光电探测器逻辑门级进行光耦合。此输出具有一个开路集电极&#xff0c;允许有线 OR 输出。耦合参数在 -40C 至…

QT----计算器

目录 1 搭建标准界面2、 逻辑编写2.1 初始化 1 搭建标准界面 按照下图搭设界面 修改样式让这计算器看起来更像一点&#xff0c;同时对按钮分组进行样式编辑&#xff0c;添加字符串name,为number&#xff0c;其他按键为other。之前的文章里出现过好几次不在赘述 修改最大的样式…

git init 执行后发生了什么?

首先在磁盘中创建一个新目录 Git&#xff0c;进入该目录后执行 git init 初始化。这个时候目录下会创建一个隐藏目录 ./git&#xff0c;这个./git 目录叫做 Git 版本库或者仓库 $ git init Initialized empty Git repository in D:/Git/.git/ 在讲解.git 目录内容前&#xff0…

【SpringBoot3】快速启动框架 快速入门 配置文件

文章目录 SpringBoot3介绍一、快速入门二、入门总结1. 为什么依赖不需要写版本&#xff1f;2. 启动器(Starter)是什么3. SpringBootApplication注解包括的效果&#xff1f; 三、SpringBoot3配置文件3.1 统一配置管理概述3.2 属性配置文件使用3.3 YAML配置文件使用3.4 批量配置文…

【Unity】读取Json的三种方法(JsonUtility,LitJson,Newtonsoft)

介绍 在Unity开发过程中&#xff0c;Json是比较常用的一种数据存储文本&#xff0c;尤其是在和第三方交互中&#xff0c;基本都是json格式。 先给出一个Json示例&#xff0c;我们来看看是如何解析的。 {"Player": [{"id": 1001,"name": "…

SSL---VPN

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.SSL-VPN概述 SLL VPN是一种基于HTTPS&#xff08;即支持SSL的HTTP协议&#xff09;的远程安全接入技术。它充分利用了SSL协议提供的基于证书的身份认证、数据加密和消息完整性验证机制&#…

23-Java空对象模式 ( Null Object Pattern )

Java空对象模式 实现范例 在空对象模式&#xff08;Null Object Pattern&#xff09;中&#xff0c;一个空对象取代 NULL 对象实例的检查Null 对象不是检查空值&#xff0c;而是反应一个不做任何动作的关系&#xff0c;这样的 Null 对象也可以在数据不可用的时候提供默认的行为…

maven运行spring boot项目

我用idea想跑一个整合flowable的spring boot项目&#xff0c;但是跑不起来&#xff0c;原因是jdk版本不够高。但是我的idea是2018版本&#xff0c;最高只能支持到jdk11。就想办法不用idea编译、打包、运行项目。因为spring boot是maven项目&#xff0c;所以可以用maven进行打包…

QT文件的读取与插入

实现功能&#xff1a; 1.输入文本到 Line_edit 点击插入&#xff0c;把文本添加到文件末端 2.点击 获取 读取txt文本&#xff0c;将文本内容显示到左边的窗口中 3.双击左边窗口的选项&#xff0c;弹出对话框&#xff0c;跳转到右边 主要介绍一下文件OI的使用 首先用QFile fil…

51单片机基础篇系列-LED灯点亮代码部分

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” #include<reg52.h> //包含单片机内部寄存器 void main() //&#xff08;&#xff09;{P10xfe;//1111 1110while(1); // } 上面是第一个 LED实验 #include<reg52.h>…

51单片机新建工程

文章目录 前言一、keil新建工程&#xff1f;1.新建文件夹 二、使用步骤1.引入库2.读入数据 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 课程需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、keil新…