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

news2024/10/5 23:29:39

文章目录

      • 343. 整数拆分
      • 96.不同的二叉搜索树:star:

343. 整数拆分

  • 题目链接:代码随想录

本题就是一个个递推,通过将dp[i]定义为第i个值的最大乘积
然后最大乘积有两种来源,一个是(i - j) * j 还有一种是dp[i - j] * j;

  • 解题思路:
    1.确定dp数组(dp table)以及下标的含义。dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。
    2.确定递推公式dp[i] = Math.max(dp[i], Math.max((i - j) * j, dp[i - j] * j));//这里不断更新dp[i]的值
    3.只初始化dp[2] = 1,从dp[i]的定义来说,拆分数字2,得到的最大乘积是1
    4.dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]

  • 推导过程

    Snipaste_2023-04-24_20-42-34

public int integerBreak(int n) {
    //dp[i]表示i的最大乘积
    int[] dp = new int[n + 1];

    //初始化2的最大乘积为1
    dp[2] = 1;

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

        for (int j = 1; j < i; j++) {
            dp[i] = Math.max(dp[i], Math.max((i - j) * j, dp[i - j] * j));
        }

    }

    return dp[n];
}

96.不同的二叉搜索树⭐️

  • 题目链接:代码随想录

重点在于递推公式的推导以及利用二叉搜索树已经排好序的性质解题

  • 递推公式推导

    Snipaste_2023-04-24_21-01-57

  • 解题思路:
    1.dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]
    2.递推公式:dp[i] += dp[j - 1] * dp[i - j]; ,j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量
    3.初始化:从定义上来讲,空节点也是一棵二叉树,也是一棵二叉搜索树,因此初始化dp[0] = 1
    4.遍历顺序:首先一定是遍历节点数,从递归公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,节点数为i的状态是依靠 i之前节点数的状态。

  • 推导过程

    image-20230424212146645

public int numTrees(int n) {
    int[] dp = new int[n + 1];

    //初始化
    dp[0] = 1;
    for(int i = 1;i <= n;i++){
        //j用来确定不同的i不同的情况
        //j变量即以j作为头结点的求i的情况,每一次循环都是加上不同的情况
        for(int j = 1;j <= i;j++){
            dp[i] += dp[j - 1] * dp[i - j];
        }
    }

    return dp[n];
}

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

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

相关文章

Nautilus Chain :基于模块化架构的Layer3正在走向成熟

Nautilus Chain是一个基于Eclipse和Celestia构建的模块化Layer3链。作为定位在Layer0的链基建概念&#xff0c;Eclipse和Celestia为面向未来的区块链扩容技术提供了一套开发工具和基础框架。尽管这种前沿技术过去一直处于概念验证阶段&#xff0c;尚未推出适用于大规模应用的成…

【消息队列】Kafka请求如何被处理的

前言 对于Kafka来说&#xff0c;分为几个阶段&#xff0c;一个是消息的生产请求&#xff0c;以及对应的消息的消费请求。一个是生产者发送到Broker&#xff0c;另一个是消费者通过pull的方式 请求Broker&#xff0c;那么Broker是如何处理这几个请求的。细分下来主要常见的是如…

OFDM-LS信道估计 MMSE信道估计公式推导

假设ofdmN个子载波之间是完全正交的&#xff0c;即不考虑ICI影响&#xff0c;通过发送训练序列来实现信道估计。 其中&#xff0c;在推导6.8的时候&#xff0c;需要将6.6先拆解一下。 X − 1 Y X − 1 ( X H Z ) X − 1 X H X − 1 Z H X − 1 Z X^{-1}Y X^{-1}(XHZ)…

【难学易用c++ 之 继承】

目录&#xff1a; 前言一、继承的概念及定义&#xff08;一&#xff09;概念&#xff08;二&#xff09;继承定义继承关系和访问限定符继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七…

TiDB实战篇-常用的高可用架构

简介 TiDB实战篇-常用的高可用架构。 高可用要考虑的问题 同城三中心 RTO<35秒 RPO0(因为一个数据中心挂点了&#xff0c;还有其他两个可以提供服务) (优点)数据副本不能在同一个数据中心&#xff08;raft多数存活&#xff09;&#xff08;PD的label标签能够解决这个问题…

OpenCV基础之常见的图像梯度算子

文章目录 OpenCV基础之常见的图像梯度Roberts交叉算子Prewitt算子Sobel算子Laplacian算子 OpenCV基础之常见的图像梯度 梯度是一个向量&#xff0c;梯度方向指向函数变化最快的方向&#xff0c;大小就是它的模&#xff0c;也是最大的变化率。 图像梯度是指在图像中某个位置处沿…

关于容器(Docker)的形象比喻

1 将容器比喻为样板间 容器是一种特殊的进程 容器依赖与Linux操作系统内核的几项技术&#xff1a;namespace、cgroup、chroot namespace 与编程语言里的 namespace 有点类似&#xff0c;它可以创建出独立的文件系统、主机名、进程号、网络等资源空间&#xff0c;相当于给进程…

回归问题(Regression)

Regression 前言Dependent vs. Explanatory VariablesHandle Numerical Labelssquared error和variance什么区别 Linear RegressionLinear Regression in 1 Dimension Least Squares &#xff08;最小二乘&#xff0c;重点&#xff09;Least Squares ObjectiveMinimizing a Dif…

确保软件项目成功——验收测试指南

确保软件项目成功——验收测试指南 在软件项目验收测试中&#xff0c;软件测试报告是非常重要的一部分&#xff0c;需要准备和提交。以山东省在2021印发的《政府采购履约验收管理办法》为例&#xff1a; 省级各国家机关、事业单位和团体组织&#xff08;以下统称“采购人”&…

会话跟踪——JWT令牌

会话指的是浏览器与服务器之间的一次连接&#xff0c;我们称之为一次会话。 在用户打开浏览器第一个访问服务器的时候&#xff0c;这个会话就建立了&#xff0c;只要有任何一方断开连接&#xff0c;此时会话就结束了。再一次会话中是可以包含多次请求和相应。那什么是会话跟踪呢…

动力节点springsecurity笔记14~18SpringSecurity 集成thymeleaf

15 SpringSecurity 集成thymeleaf 此项目是在springsecurity-12-database-authorization-method 的基础上进行 复制springsecurity-12-database-authorization-method 并重命名为springsecurity-13-thymeleaf 15.1 添加thymeleaf依赖 | <groupId>org.springframewor…

vue3+vite3+typescript使用wangEditor编辑器

文章目录 ⭐写在前面⭐步入正题&#x1f680;1.安装&#x1f680;2.配置2.1 存数据2.2 读数据 &#x1f680;3.跨域及其他问题3.1 跨域3.2 其他问题 &#x1f680;4.写在最后 ⭐写在前面 &#x1f680; 框架Vue3 Vite3 TypeScript&#xff1a; &#x1f449; Vue3&#xff…

地铁站人流检测硬件部分

目录 一、概述 二、驱动程序 2.1debug串口 2.2体重传感器HX711 2.3滴答定时器 2.4ESP8266 2.5人体检测 2.6 IIC的GPIO 2.7 OLED的IIC 2.8 LED 三、应用 四、中断 一、概述 使用STM32C8T6作为主控 A9 ---> tx&#xff08;调试串口&#xff09; A10 ---> …

算法训练 Day41 | 动态规划

343. 整数拆分 思路&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 确定递推公式&#xff1a;dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 可以想 dp[i]最…

【python装饰器:看懂这10个例子你就掌握了!】

基本说明 Python 装饰器是一种函数&#xff0c;它可以用来修改其他函数的功能。它是 Python 中的一项高级编程技术&#xff0c;也是 Python 中比较重要的语法之一。 简单来说&#xff0c;装饰器就是一个函数&#xff0c;它可以接受一个函数作为参数&#xff0c;并返回一个函数…

Obsidian+坚果云+FolderSync解决电脑端和安卓端同步方案

目录1.Obsidian电脑端准备 2.Obsidian安卓端准备 3.坚果云电脑端准备 4.坚果云手机端准备 5.FolderSync手机端准备 6.百度云冗余备份 1.Obsidian电脑端准备 这里以windows版本为例&#xff0c;下载后安装 1.Obsidian官网&#xff1a;https://obsidian.md/ 官网下载有时候…

电力电网行业IT运维方案

智能电网背景下&#xff0c;电力、电网企业信息化逐渐渗透到其业务链的各个环节&#xff0c;云计算、物联网、移动互联网等新技术的应用&#xff0c;更驱动信息化与业务创新深度融合。电力、电网企业集团信息系统群逐渐朝着一体化方向发展&#xff0c;信息链越来越长&#xff0…

银行数字化转型导师坚鹏:宏观经济趋势与资本行业机遇和挑战

2023年宏观经济趋势与资本行业机遇和挑战 课程背景&#xff1a; 很多学员存在以下问题&#xff1a; 不知道我国目前的宏观经济形势&#xff1f; 不清楚宏观环境对我国经济的影响&#xff1f; 不知道资本行业未来主要发展趋势&#xff1f; 课程特色&#xff1a; 精彩解…

基于php的校园校园兼职网站的设计与实现

摘要 近年来&#xff0c;信息技术在大学校园中得到了广泛的应用&#xff0c;主要体现在两个方面&#xff1a;一是学校管理系统&#xff0c;包括教务管理、行政管理和分校管理&#xff0c;是我国大学管理和信息传递的主要渠道。二是学生生活服务平台。而随着大学生毕业人数的年…

leetcode重点题目分类别记录(四)图论深入

文章目录 入度出度最大网络秩可以到达所有点的最少点数目 并查集省份数量等式方程的可满足性按字典序排列最小的等效字符串以图判树 二分图判断二分图 深度优先搜索封闭岛屿数量太平洋大西洋水流问题 广度优先搜索树上逃逸最短路径多源最短路径 拓扑排序DFS解决拓扑排序BFS解决…