代码随想录算法训练营第四十三天 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分

代码随想录

视频讲解:动态规划,本题关键在于理解递推公式!| LeetCode:343. 整数拆分_哔哩哔哩_bilibili

解题思路

1. dp[i]对i进行拆分,得到的最大的乘积为dp[i]

2.递推公式

一个是j * (i - j) 直接相乘,拆为两个数

一个是j * dp[i - j],相当于是拆分(i - j),拆为三个或以上

dp[i] = max(上面两个)

3.初始化

dp[0] = 0;

dp[1] = 0;

dp[2] = 1;

4.遍历顺序从i=3开始遍历,直接到n,而j只需要遍历到i/2即可,因为乘积最大只会出现在数尽可能相同的情况下

class Solution {
public:
    int integerBreak(int n) {
          vector<int> dp(n+1);
          dp[0] =0;
          dp[1] = 0;
          dp[2] = 1;
          for(int i=3 ; i<=n ; i++)
          {
              for(int j =1; j<=(i/2);j++ )
              {
                 dp[i] = dp[i]>max(j*(i-j),j*dp[i-j]) ? dp[i] : max(j*(i-j),j*dp[i-j]) ;
              }
          }
          return dp[n];
    }
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

96.不同的二叉搜索树

代码随想录

视频讲解:动态规划找到子状态之间的关系很重要!| LeetCode:96.不同的二叉搜索树_哔哩哔哩_bilibili

解题思路

 当n为3的时候,那么就有头结点为1,2,3的情况

头1 = 左子树0节点元素情况 * 右子树2节点元素的情况

头2 = 左子树1节点 * 右子树1节点

头3 = 左子树2节点 * 右子树0节点

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

1.dp[i] 表示 i为节点个数,dp[i]表示有多少个二叉搜索树

2.例如以j为头结点,左子树有j-1个节点,右子树有i-j个节点,一共是i个节点(二叉搜索树的特性)

dp[i] += dp[j-1] * dp[i-j]  不同头结点的情况是相加起来的

3.初始化

dp[0] =1 空节点也算是一个子树,且是符合递推公式的

dp[1] =1

dp[i] =0

4.遍历顺序

dpi都是由比他小的节点个数推导而来

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

收获

动态规划太难了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PS系统教学02

多个图片同时进行打开 在素材库里面选中两张图片&#xff0c;直接拖进PS软件中&#xff0c;此时会显示其中一张。当按下回车键会显示另一张。 当图层过多&#xff0c;需要进行选择&#xff0c;其中某一张图片&#xff0c;按住Ctrl键&#xff0c;进行选择点击&#xff0c;可以移…

集合—Map子类(HashMap、HashTable、Properties)

一、HashMap HashMap是Map接口使用频率最高的实现类。 HashMap是以键值对(key-value)形式存储数据。 key不能重复&#xff0c;值可以重复&#xff0c;允许使用null作为键或值。 添加相同的key&#xff0c;新的value将会覆盖原有的value。 不能保证存取顺序一样。 HashMap没有实…

Linux搭建PHP下的RabbitMQ环境(php-amqp/rabbitmq-c/erlang)

本文演示环境 Red Hat 11.2.1-9gcc (GCC) 11.2.1 20220127OpenSSL v1.1.0PHP 7.1 安装erlang erlang和RabbitMQ有版本对应关系Erlang Version Requirements&#xff0c;需要选择正确的版本。 本文以erlang 26和RabbitMQ 3.13.2为例。 erlang下载地址 下载包上传服务器后&a…

Pytorch-Reduction Ops

文章目录 前言1.torch.argmax()2.torch.argmin()3.torch.amax()4.torch.amin()5.torch.all()6.torch.any()7.torch.max()8.torch.dist()9.torch.logsumexp()10.torch.mean()11.torch.norm()12.torch.nansum()13.torch.prod()14.torch.cumsum()15.torch.cumprod() 前言 1.torch.…

FastGPT + OneAPI 构建知识库

云端text-embedding模型 这个在前面的文章FastGPT私有化部署OneAPI配置大模型中其实已经说过&#xff0c;大概就是部署完成OneAPI后&#xff0c;分别新建令牌和渠道&#xff0c;并完成FastGPT的配置。 新建渠道 选择模型的类型并配置对应的词向量模型即可&#xff0c;这里我…

代理注册湖北武汉投资管理公司流程和条件

我公司代理注册湖北武汉投资管理公司&#xff0c;现在大家都知道全国的投资管理公司已经停批了&#xff0c;很多需要收购的老板都是通过收购现成的投资管理公司经营的&#xff0c;现在我告诉大家一个好消息&#xff0c;我们有渠道办理湖北武汉资产管理公司&#xff0c;详情致电…

【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(一)

文章目录 &#x1f680;Linux基础命令⭐1. 查看目录命令&#x1f4a5;2. 切换目录&#x1f44a;3. 创建目录❤️4. 删除目录/文件&#x1f6b2;5. 修改目录/文件&#x1f308;6. 拷贝目录/文件 &#x1f680;Linux基础命令 ⭐1. 查看目录命令 在Linux中&#xff0c;查看目录的…

【九十七】【算法分析与设计】图论,迷宫,1207. 大臣的旅费,走出迷宫,石油采集,after与迷宫,逃离迷宫,3205. 最优配餐,路径之谜

1207. 大臣的旅费 - AcWing题库 很久以前&#xff0c;TT 王国空前繁荣。 为了更好地管理国家&#xff0c;王国修建了大量的快速路&#xff0c;用于连接首都和王国内的各大城市。 为节省经费&#xff0c;TT 国的大臣们经过思考&#xff0c;制定了一套优秀的修建方案&#xff0c;…

[oeasy]python019_ 如何在github仓库中进入目录_找到程序代码_找到代码

继续运行 &#x1f94b; 回忆上次内容 上上次 真写了万行代码 这 万行代码 都是写在明面上的 这次 使用git命令 下载了 github上面的仓库 下载仓库 之后 又该 怎么办呢&#xff1f;&#x1f914; 进入目录 首先看看 目前 在哪个目录 pwd present working directory 当前目…

论文《Planning-oriented Autonomous Driving》详细解析

论文《Planning-oriented Autonomous Driving》详细解析 摘要 现代自动驾驶系统被描述为顺序执行的模块化任务&#xff0c;即感知、预测和规划。为了执行各种任务并实现高级别智能&#xff0c;当前的方法要么为每个任务部署独立的模型&#xff0c;要么设计带有独立头的多任务范…

【YOLOv10】使用yolov10训练自己的数据集/验证 /推理 /导出模型/ONNX模型的使用

YOLOv10: 实时端到端的目标检测。 性能 YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 目录 1 数据准备 2 配置文件 3 训练 4 验证 5 预测 6 导出模型 7 ONNX模型的使用 官方论文地址…

高速公路边坡监测预警系统解决方案

一、概述 高速公路是国家交通大动脉&#xff0c;高速公路的安全、稳定是人民生命安全的保障。高速公路地基和边坡在线监测系统是交接高速公路运行状态的耳目&#xff0c;是保证高速公路稳定、安全保障人民生命财产安全、充分发挥高速公路国家交通大动脉的重要手段。高速边坡在线…

国产POE芯片,芯昇电子成熟量产POE芯片,在PSE端和PD端均成熟量产产品

随着技术的发展和市场的需求&#xff0c;国产POE芯片已经逐渐崭露头角。在POE技术领域&#xff0c;POE芯片分为供电设备PSE和受电设备PD&#xff0c;而选择参与802.3bt标准与以太网联盟徽标计划的厂商来生产这些芯片&#xff0c;可以确保在互操作性和合规性上更有把握。过去…

藏汉双语翻译平台,专业准确的藏语翻译工具和藏文OCR识别工具,在西藏提高工作效率的利器!

如果你正在找一款支持藏语-汉语双向翻译、操作简单、功能又丰富的藏汉在线翻译器&#xff0c;那就不得不推荐一下近期上线的藏汉翻译通小程序。在西藏工作、拉萨旅游或者写藏文作文时&#xff0c;如果你有翻译藏语的需求&#xff0c;那它&#xff0c;就能满足你&#xff0c;协助…

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

JavaSE——类和对象(三)~~继承

目录 一.继承 1.为什么需要继承 2 .继承概念 3.继承的语法格式 4.继承的特性及好处 5.父类成员访问 6.继承关系上的代码块执行顺序​​​​​​​ 二.继承与组合 一.继承 1.为什么需要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏&#xff0c;而且录屏效率太慢&#xff0c;本文将介绍你一种高效率的工具&#xff0c;小浪助手.exe&#xff0c;它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了&#xff0c;有需要的自己下载一下 注意&#xf…

wxPython应用开发-后台线程更新大量数据到wxGrid避免ui无响应

一、问题描述 最近几天&#xff0c;我在用python开发一个数据处理的小工具。需要将xls文件中的大量数据&#xff08;少则几千行多则几万行&#xff09;读取出来后进行处理。其中一个功能是需要实现将读取到的原始数据和计算出来的结果在软件界面中以表格形式展示出来。 在pyt…

JVM学习-垃圾回收(二)

标记-清除(Mark-Sweep)算法 当堆中的有效内存空间被耗尽的时候&#xff0c;就会停止整个程序(stop the world)&#xff0c;然后进行两项工作&#xff0c;第一项则是标记&#xff0c;第二项是清除 标记&#xff1a;Collector从引用根节点开始遍历&#xff0c;标记所有被引用的…

Redis分布式存储方案

一、Redis分布式存储方案 1、哈希取余分区 ①、原理 哈希计算&#xff1a;首先&#xff0c;对每个键&#xff08;key&#xff09;进行哈希计算&#xff0c;得到一个整数哈希值&#xff08;hash value&#xff09;。取余操作&#xff1a;将这个哈希值对服务器数量进行取余操作…