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

news2024/12/24 21:52:54

题目链接:343. 整数拆分

1.代码

暴力做法:n前进行组合搜索得出二维数组result存放结果,然后对里面的元素进行乘积,谁最大就是结果

2.递归做法

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

2.递归五部曲

1.推导dp数组和其中的含义

题目为求拆分n的乘积最大值,这就是dp数组的含义

2.推导递推公式

f[i]等于什么呢?由题目可以看出,我们先来看后面几个,因为题目没有说,我们不知道前几步到底在哪,k必须大于或等于2,我们就可以看成f[i]是由2个,3个,4个,i个构成的,我们可以先定义一个变量j遍历,确定第一个元素

如果是2个时,f[i] = j *(i - j)

如果是更多个,f[i] = j * f[i - j];

所以我们可以确定这两种类型可以确定f[i]

因为是对j进行for循环,我们需要对每个j求,最后的最大值就是结果

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

3.确定初始参数值

我们可以确定必须要分成两份,f[2] = 1

4.确定递推顺序

因为我们需要求f[n],所以最外面一层是对每个i进行求最大值,直到求到n

第二层就是对每个i求最大值的逻辑,确定第一个参数,其他参数就能够确定了

5.举例推导dp数组

可以自己模拟前面几个看一看正确不正确


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

1.代码

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

 2.递归五部曲

1.确定dp数组和其下标含义

题目求结点数位n的二叉搜索树的个数,dp[i]就是求结点数位i的搜索树个数

2.确定递推公式

怎么求出的二叉搜索树的个数呢?

如3,对每个结点都有是根节点的可能性,根节点可以是1,2,3。当结点为1时,左子树必须比1小,说明左子树个数为0,右子树为2.  当结点为2时,左右子树各一个结点。  当根结点为3时,左边有两个,右边没有,可以推导f[3] = f[0]f[2] + f[1][1] + f[2][0],就是i为根,比i小的个数*比i大的个数就是以i为根节点的二叉搜索树个数

f[i]:i个结点搜索树的个数,--求出f[i]必须求出从1到i为根结点的二叉搜索树的个数和

3.初始化

介于推导地推公式需要f[0]=1,为0不能,f[1]=1,f[2] =2,其实可以不写这么多,用到哪个写哪个

4.确定递推顺序

因为需要求出f[n]前必须求出f[1-n]所以外面一层循环是求每一个f[i],里面的循环是有i个结点后以j为根结点的个数,对其求和就是i个结点的二叉搜索树的个数了

5.距离说明dp数组

 

可以自己距离前面几个模拟一下

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

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

相关文章

LinkedList链表知识点概括

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望2023年迎来更优秀的自己&#xff01;希望跟大家一同进步~ 文章目录 前言 一、链表的基本概念 二、面试题实战 前言 顺序表/ArrayList:…

数据湖之Hudi基础:核心原理

继续Hudi核心概念 参考官网描述与尚硅谷hudi公开资料 文章目录基本概念时间轴TimeLine1.Instants action 在表上执行的操作类型2.Instant time3.State两个时间概念文件布局&#xff08;FileLayout&#xff09;索引 Index表类型&#xff08;Table Types&#xff09;Copy On Writ…

echarts:实现3D地图版块叠加动效散点效果

需求描述 如下图所示&#xff0c;展示3D效果的地图版块&#xff0c;并叠加显示动效散点&#xff1a; 实现思路 首先是3D地图版块效果的实现&#xff0c;可以参考广州3D地图&#xff1b;而动效散点的实现&#xff0c;可以参考地图发散分布。 这里再提一个经过尝试并不行的思…

【mmdeploy】mmseg转ONNX/TensorRT,附推理代码

目录 1.关于mmdeploy 2.环境安装 2.1预编译安装&#xff08;Linux-x86_64, CUDA 11.x, TensorRT 8.2.3.0&#xff09;&#xff1a; 2.2预编译安装&#xff08;Linux-x86_64, CUDA 11.x, ONNX&#xff09;&#xff1a; 3.mmseg工程torch转onnx 4.使用onnx模型文件进行推理…

Dubbo框架学习(第一章Dubbo简介)

由于在微服务领域有两大框架统治&#xff0c;一个是springCloud的全家桶&#xff0c;一个是Dubbo。我用Dubbo比较少&#xff0c;所以也是学习状态。Dubbo框架学习&#xff0c;资料来源于cn.dubbo.apache.org。第一章Dubbo简介Apache Dubbo 是一款 RPC 微服务框架&#xff0c;提…

字节跳动青训营--前端day2

文章目录前言一、css1. css的组成2. css三种使用方式3.css的工作方式二、 css选择器Selector1. 选择元素的方式2. 伪类&#xff08;pseudo-classes&#xff09;2.1 状态伪类2.1 结构伪类3.通过组合选择元素3.1 直接组合3.2 元素组合的拓展4. 选择器的特异度&#xff08;Specifi…

小型水库雨水情测报和安全监测解决方案

平升电子小型水库雨水情测报和安全监测解决方案辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能&#xff0c;有效提升了雨水情信息的时效性和准确度&#xff0c;为保…

jmeter 使用beanshell 编写脚本

一、介绍 1.1 介绍 BeanShell是一个小型的、免费的、可嵌入使用Java编写的具有对象脚本语言特性的Java源码解释器。 动态执行所有Java语句、Java代码片段以及弱类型Java和附加的脚本的便利 透明地访问所有Java对象和API 四种运行模式&#xff1a;命令行、控制台、Applet、远…

数据结构专题 -- 哈希思想详解

代码会存放在&#xff1a; https://github.com/sjmshsh/Data-Struct-HandWriting 通过阅读本篇文章&#xff0c;你可以学到&#xff1a; 哈希思想及其本质使用C实现简易的哈希表哈希思想的应用 位图布隆过滤器哈希切分极致升华&#xff0c;海量数据处理面试题 拓展 – 一致性…

二叉树的应用——哈夫曼树

哈夫曼树与哈夫曼编码 1.树的带权路径长 百分制成绩转五级制的算法流程图&#xff08;A/B/C/D/E的人数分别为6/18/21/36/19&#xff09;带权路径长 路经长 x 权重 树的带权路经长&#xff1a;所有叶结点的带权路径长度之和。 例如&#xff1a; &#xff08;a&#xff09;图…

[ 攻防演练演示篇 ] 利用谷歌 0day 漏洞上线靶机

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

橘子学kafka之基础命令使用

本系列主要开始处理关于kafka的一些技术知识点&#xff0c;尽量会以代码和实际命令为主要表达形式来做表现。 本文主要是关于如何在客户端使用命令做一个描述&#xff0c;其实我本来不想写的&#xff0c;但是今天在公司有同事居然不会&#xff0c;所以我觉得还是描述一下。而且…

贪心算法合集

95 分糖果问题 思路非常简单&#xff0c;和题解一模一样&#xff1a; 用数组存每个人对应的糖果数量&#xff0c;初始为1 从左到右遍历&#xff0c;如果比左边的大&#xff0c;1再从右到左遍历&#xff0c;如果比右边的大&#xff0c;1 import java.util.*;public class Solu…

录屏大师电脑版推荐(一键录制声画同步的视频)

很多小伙伴使用电脑多年&#xff0c;却不知道电脑有录屏功能。想要对电脑屏幕进行录制&#xff0c;只需在电脑上安装一个录屏大师。那有没有录屏大师电脑版推荐呢&#xff1f;在试用了多款电脑录屏大师之后&#xff0c;小编今天给大家推荐一款可以一键录制声画同步视频的录屏大…

使用Python为二年级的学生批量生成数学题

文章目录一.使用Python为二年级的学生批量生成数学题1.1 背景二.解决思路及其代码三.排版及其打印四.本文源码一.使用Python为二年级的学生批量生成数学题 1.1 背景 我妹妹今年上二年级&#xff0c;她的老师今天给他们布置了一项作业&#xff1a; 从今天起到开学&#xff0c;…

ENSP的AR40问题解决

AR40以及其他相关问题都可以参考此方法&#xff0c;都已经可以正常使用 现在有enspAR40问题的同学有救了&#xff0c;ensp的AR40问题困扰了我很长时间&#xff0c;根据官方的问题解决文档没有解决&#xff0c;反正就是之前的所有方法都没有用&#xff0c;也不是都没有用&#x…

初读《编程之美》就想秀一下,结果还翻车了

文章目录 一、前言 二、我的思路 三、Code 四、翻车现场 五、后续问题 一、前言 ———如何写一个短小的程序&#xff0c;让 Windows 的任务管理器显示CPU的占用率为50%? 这道有趣的面试题我是这两天从《编程之美》电子版中看到的&#xff0c;看意思就是邹老师在微软对一…

入门postgre sql(PG的下载和安装,包括普通用户源码构建的安装方式)

目录PG的下载安装1、Windows 上安装2、Linux上安装有root权限的安装无root权限的安装PG的下载安装 点击这里&#xff0c;了解pg 1、Windows 上安装 (1)下载安装 访问官网下载地址 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载最新发布的Po…

3.kafka-3.生产者,消费者

文章目录1.个性化配置&#xff0c;增加吞吐量2.发送事务消息3.消费组手动提交offset指定offset位置进行消费指定时间消费当新增消费者&#xff0c;或者消费组时&#xff0c;如何消费漏消息和重复消息如何解决消费解压问题1.个性化配置&#xff0c;增加吞吐量 private static vo…

使用 .NET 7、Blazor 和 .NET MAUI 构建你自己的 Podcast App

.NET Podcast App 首次在 .NET Conf 2021上推出&#xff0c;最近进行了更新以在 .NET Conf 2022 keynote 中突出显示 .NET 7 中的新功能。该 Podcast App 已准备好使用展示 .NET&#xff0c;ASP.NET Core&#xff0c;Blazor&#xff0c;.NET MAUI&#xff0c;Azure Container A…