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

news2025/6/10 4:47:10

343. 整数拆分

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积 。

示例 1:

输入: n = 2

输出: 1

解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

输入: n = 10

输出: 36

解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 

提示:

  • 2 <= n <= 58

问题分析:

 1、确定dp[i]数组以及下标的含义

dp[i]:拆解i,得到的最大乘积dp[i]

2、确定递推公式

有两种方式获得dp[i]

  • j * ( i - j )(拆分i,拆成2份)
  • j * dp[ i - j ]( 让i - j继续拆分,拆成3份及3份以上)

求最大乘积:dp[i]=Math.max(Math.max(j*(i-j),j*dp[i-j]),dp[i]);

最后max里加dp[i],因为是求整个dp[i]的最大值

3、dp数组初始化

n从2开始,所以dp[2]=1+1,1*1=1

4、确定遍历顺序

dp[i]依靠dp[i-j]的状态,所以从前往后

5、打印dp数组

class Solution {
    public int integerBreak(int n) {
        int[] dp=new int[n+1];
        dp[2]=1;
        for (int i=3;i<=n;i++){
            for (int j=1;j<i;j++){
                dp[i]=Math.max(Math.max(j*(i-j),j*dp[i-j]),dp[i]);
            }
        }
        return dp[n];
    }
}

96.不同的二叉搜索树 

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例 1:

输入:n = 3

输出:

示例 2:

输入:n = 1

输出:1

提示:

  • 1 <= n <= 19

问题分析:

1、确定dp[i]数组以及下标的含义

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

2、确定递推公式

n=3:

1为头节点时,右子树有两个节点,布局和n=2时两棵树的布局一样(不关心数值,只关心布局)

2为头节点时,左子树有一个节点,右子树有一个节点,布局和n=1时一样

3为头节点时,左子树有两个节点,布局和n=2时两棵树的布局一样

dp[3]就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量

元素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]

递推公式:

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

j为左子树的节点数,i-j-1为右子树的节点数

3、dp数组初始化

dp[0]=1(空子树也为二叉搜索树),dp[1]=1

4、确定遍历顺序

dp[i]依靠dp[i-j-1]的状态,所以从前往后

5、打印dp数组

class Solution {
        public int numTrees(int n) {
            int[] dp = new int[n + 1];
            dp[0] = 1;//空节点也算二叉搜索树
            dp[1] = 1;
            for (int i = 2; i <= n; i++) {
                for (int j = 0; j < i; j++) {
                    dp[i] = dp[i] + dp[j] * dp[i - j - 1];
                }
            }
            return dp[n];
        }
    }

 

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

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

相关文章

电子技术——共栅(共基)放大器

电子技术——共栅&#xff08;共基&#xff09;放大器 在本节我们学习IC中共栅&#xff08;共基&#xff09;放大器的配置&#xff0c;虽然我们之前在分立电路中学习过共栅&#xff08;共基&#xff09;放大器的配置。但是在IC中共栅&#xff08;共基&#xff09;放大器主要作为…

MES系统助力电子厂行业,打造高能效工厂

ES主要包括生产计划系统、工艺管理系统、质量管理系统、生产过程管理系统、设备管理系统、仓储管理系统及数据采集和统计分析系统等。实现生产过程可视化、可追溯。管理人员可以在管理界面对生产实时控制&#xff0c;从而根据需要精准调整生产&#xff0c;达到提高生产效率、缩…

算法与数据结构理解

目录1、数据结构与算法1.1 定义1.2 常见数据结构1.3 常用算法2、插入排序3、希尔排序4、归并排序1、数据结构与算法 1.1 定义 数据结构&#xff1a;是计算机中存储、组织数据的方式。具有一定逻辑关系&#xff0c;应用某种存储结构&#xff0c;并且封装了相应操作的数据元素集…

HTML浪漫动态表白代码+音乐(附源码)

HTML浪漫表白求爱(附源码)&#xff0c;内含4款浪漫的表白源码&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;求爱场景&#xff0c;下载直接使用。 直接上源码吧 一.红色爱心 1.效果 实际效果是动态的哦 2.源码 复制粘贴即可运行哦 <!DOCTYPE…

JVM 线程本地分配缓存TLAB

什么是TLAB 从内存模型而不是垃圾收集的角度&#xff0c;对 Eden 区域继续进行划分&#xff0c;JVM 为每个线程分配了一个私有缓存区域&#xff0c;它包含在 Eden 空间内 多线程同时分配内存时&#xff0c;使用 TLAB 可以避免一系列的非线程安全问题&#xff0c;同时还能提升…

一文读懂CXL协议

2001年&#xff0c;英特尔公布了第三代I/O技术——3GIO技术&#xff08;后更名为PCI Express&#xff0c;即PCIe&#xff09;&#xff0c;以高性能、高扩展性、高可靠性及出色的兼容性取代了包括AGP和PCI在内所有的内部总线并且不断升格。例如&#xff0c;2019年5月底公布的PCI…

JUC锁与AQS技术【我的Android开发技术】

JUC锁与AQS技术【我的Android开发技术】 AQS原理 AQS就是一个同步器&#xff0c;要做的事情就相当于一个锁&#xff0c;所以就会有两个动作&#xff1a;一个是获取&#xff0c;一个是释放。获取释放的时候该有一个东西来记住他是被用还是没被用&#xff0c;这个东西就是一个状…

六、Linux文件 - lseek函数

目录 1.lseek函数 2.lseek函数实战 2.1宏SEEK_CUR的用法 2.2宏SEEK_END的用法 3.Open函数实战 - O_APPEND的用法 4.Linux在库函数中寻找相应的宏定义 1.lseek函数 off_t lseek(int fd,off_t offset,int whence);光标的偏移量 fd:文件描述符offset:偏移量whence: SEEK_…

macOS中虚拟机桥接模式分配静态ip

1.首先使用dhclient命令&#xff0c;在局域网中分配一个C类地址。 2.获得地址后&#xff0c;输入ifconfig&#xff0c;查看分配的地址。 3.然后编辑vi /etc/sysconfig/network-scripts/ifcfg-en***文件 在该配置文件中编辑&#xff0c;设置ONBOOTyes&#xff0c;而后添加静态配…

分享5款安全无毒,下载简单的小软件

今天推荐一些安全无毒&#xff0c;下载简单&#xff0c;最重要的是没有广告的软件&#xff01; 1.文件备份传输——MultiPar MultiPar是一款奇偶校验文件工具&#xff08;Parchive tool&#xff09;&#xff0c;用来为文件、文件夹创建校验块&#xff0c;当文件损坏时&#xf…

客户端SDK测试是什么?如何测?(附真实项目经历)

客户端SDK测试是什么&#xff1f;如何测&#xff1f; 目录&#xff1a;导读 SDK是什么 测什么&#xff1f; 功能怎么测 接下来为大家讲述一番我的真实案例 1、做了些什么 2、做的方法 3、做得好的&#xff1a; 4、做得不好的&#xff1a; 5、个人成长&#xff1a; 6、…

产品设计方法论之基础

1、信息控件 输入框限制 输入文本的内容限制。常见的内容限制主要纯字母 (如英文有纯数字 (如手机号码)、名)、纯汉字(如中文名) &#xff0c;以及各种类型的排列组合或违禁内容的输入限制。如果用户输入限制的内容&#xff0c;我们可以按无法输入的逻辑处理&#xff0c;也可以…

LeetCode题解 动态规划(三):343 整数拆分;96 不同的二叉搜索树

343 整数拆分 medium 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 这道题乍一看没有点儿动态规划的影子&#xff0c;反而感觉用数学法可以求解。 但是…

后勤管理系统—服务台管理功能

数图互通是一家IT类技术型软件科技公司&#xff0c;专业的不动产、工作场所、空间、固定资产、设备家具、设施运维及可持续性管理解决方案软件供应商。 一、后勤管理系统服务台管理功能包含&#xff1a; 1、专业自动化、集中管理的自助服务助理&#xff0c;随时响应服务请求。…

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 &#xff0c;您的企业还没使用在线软件工具吗&#xff1f;自从用了在线工具之后&#xff0c;感觉打开了新办公世界的大门&#xff0c;效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说&#xff0c;在线实在是太棒了&#xff01;今天安利几个非常不错的在线软件工…

基于matlab使用神经网络清除海杂波

一、前言此示例演示如何使用深度学习工具箱™训练和评估卷积神经网络&#xff0c;以消除海上雷达 PPI 图像中的杂波返回。深度学习工具箱提供了一个框架&#xff0c;用于设计和实现具有算法、预训练模型和应用程序的深度神经网络。二、数据集该数据集包含 84 对合成雷达图像。每…

智能工厂自动化设备如何将数据采集到物联网云平台上

制造业工厂在进行生产管理、数字化转型升级的过程中&#xff0c;大量自动化设备的数据采集上云一直是困扰厂商的难题之一。因设备种类多、工艺复杂、设备老旧无多余通信接口导致数据无法集中、工艺无法实时管控&#xff0c;加上设备服务商的本地支持比较有限&#xff0c;因此设…

react-jwchat

react-jwchat: react-jwchat是一个基于React实现的web聊天组件。 如何阅读大型前端开源项目的源码 - 掘金 rollup专注以ESModule打包/自动treeshaking,更准确的来说rollup是小而美的打包工具 ts“typescript” ts是js类型的超集&#xff0c;被编译成纯js再执行 js&#xff…

阳康后是否二次感染,长新冠与肠道菌群的关联,多种潜在的干预措施

谷禾健康 随着大家陆续“阳康”&#xff0c;大家逐渐恢复以往的生活&#xff0c;城市的烟火气回来了。 然而阳康后真的万事大吉了吗&#xff1f; 还是有很多朋友处于这样的状态&#xff1a;感觉恢复了&#xff0c;又好像没有完全恢复&#xff0c;身体多少有点不适&#xff0c;开…

VirtualBox 虚拟机安装Windows10,珍藏版!!!

1、virtualbox管理器开始运行&#xff0c;点击【新建】按钮&#xff0c;开始新建虚拟电脑&#xff08;输入名称&#xff0c;修改路径&#xff0c;勾选版本等&#xff09;&#xff0c;如下图&#xff1b; 2、下一步&#xff0c;选择内存大小&#xff0c;默认推荐2048MB 3、创建后…