【Leetcode】 96. 不同的二叉搜索树

news/2024/4/28 21:54:13/文章来源:https://blog.csdn.net/qq_54053990/article/details/133859947

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

输入n = 3
输出5

示例 2:

输入n = 1
输出1

提示:
1 <= n <= 19


AC:

/** @lc app=leetcode.cn id=96 lang=cpp** [96] 不同的二叉搜索树*/// @lc code=start
class Solution {
public:int numTrees(int n) {vector<int> dp(n + 1);dp[0] = 1;dp[1] = 0;for(int i = 1; i <= n; i++) {for(int j = 1; j <= i; j++) {dp[i] += dp[j - 1] * dp[i - j];}}return dp[n];}
};
// @lc code=end

AC

在这段代码中,dp[0] 被初始化为 1,而不是 dp[1]。这是因为在计算二叉搜索树的数量时,当节点数为0时,只有一种情况,即空树。因此,dp[0] 的值应该为 1

如果将 dp[1] 直接初始化为 1,那么在计算节点数为 1 的二叉搜索树数量时,会出现错误。因为当节点数为 1 时,只有一个节点,无法构成二叉搜索树。因此,dp[1] 的值应该为 0

在这段代码中,dp[0] 被初始化为 1,是为了方便计算。在计算节点数为 i 的二叉搜索树数量时,需要遍历所有可能的左子树右子树,因此需要从 dp[0] 开始计算。如果将 dp[0] 初始化为 0,那么在计算节点数为 2 的二叉搜索树数量时,需要使用 dp[1] 的值,而 dp[1] 的值为 0,会导致计算错误。

因此,将 dp[0] 初始化为 1,可以避免这个问题,同时也方便了计算。


同时,如果不初始化dp[1],该代码也是可以AC的!

/** @lc app=leetcode.cn id=96 lang=cpp** [96] 不同的二叉搜索树*/// @lc code=start
class Solution {
public:int numTrees(int n) {vector<int> dp(n + 1);dp[0] = 1;for(int i = 1; i <= n; i++) {for(int j = 1; j <= i; j++) {dp[i] += dp[j - 1] * dp[i - j];}}return dp[n];}
};
// @lc code=end

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

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

相关文章

甘特图:如何制定一个有效的项目计划?需要考虑这些方面

一个清晰、可行的计划能够为团队提供明确的方向&#xff0c;确保项目顺利执行&#xff0c;缺乏明确的计划可能导致项目偏离轨道。 甘特图是一种通过条状图形来表示项目和进度的工具&#xff0c;由于其具有视觉化的优点&#xff0c;使得管理者能够更容易地掌握项目进展情况。因…

快速傅里叶变换FFT在MATLAB中的实现

一、FFT的由来 首先&#xff0c;为什么要进行傅里叶变换&#xff1f;将时域的信号变换到频域的正弦信号&#xff0c;正弦比原信号更简单&#xff0c;且正弦函数很早就被充分地研究&#xff0c;处理正弦信号比处理原信号更简单。正弦信号的频率保持性&#xff1a;输入为正弦信号…

电力物联网关智能通讯管理机-安科瑞黄安南

众所周知&#xff0c;网关应用于各种行业的终端设备的数据采集与数据分析&#xff0c;然后去实现设备的监测、控制、计算&#xff0c;为系统与设备之间建立通讯联系&#xff0c;达到双向的数据通讯。 网关可以实时监测并及时发现异常数据&#xff0c;同时自身根据用户规则进行…

微信小程序引入阿里巴巴iconfont图标并使用

介绍 在小程序里&#xff0c;使用阿里巴巴的图标&#xff0c;如下所示: 使用方式 搜索自己需要的图标&#xff0c;然后将需要用到的图标加入购物车&#xff0c;如下图所示&#xff1a; 去右上角&#xff0c;点击购物车按钮&#xff1b;这里第一次使用&#xff0c;会有三个提…

图纸管理制度、技术部图纸管理制度

图纸管理制度 1、技术部必须做图纸领用及归还记录&#xff0c;到期未还者&#xff0c;根据记录及时追收 2、技术部根据管理部每天公布的缺勤公告&#xff0c;确定领图者的合法性&#xff0c;并对其负责 3、图纸损坏或丢失的&#xff0c;追究相关责任人的绩效分数&#xff0c;…

软件测试定位bug方法+定位案例(详解)

1、问题bug定位技巧 首先&#xff0c;作为开发也好&#xff0c;测试也好&#xff0c;定位问题有一个总的思路&#xff0c;而这个思路是和数据的走向一致的。 大致是这样&#xff1a; 用户层面问题 -> Web页面/软件界面 -> 中间件 -> 后端服务 -> 代码 -> 数据…

SpringBoot整合阿里云OSS、天翼云OSS、MinIO对象存储

大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 以下是正文&#xff01; 对象存储是什么&#xff1f…

idea禁用双击ctrl

Run anything | IntelliJ IDEA Documentation Disable double modifier key shortcuts

Adaptive Homogeneity-DirectedDemosaicing Algorithm

Abstract 经济高效的数码相机使用单图像传感器&#xff0c;将红色、绿色和蓝色滤色镜的交替图案应用到每个像素位置。通过估计每个颜色平面中缺失的像素分量来重建彩色图像的完整三色表示的方法称为去马赛克算法。本文提出了通常与结合二维 (2-D) 方向插值的去马赛克算法相关的…

密码管理的艺术:数据库存储密码的策略、技术和工具

最近接手公司一个之前的服务&#xff0c;竟然发现用户密码是明文存储在数据库中&#xff01; 说实话还是有点吃惊的&#xff0c;这可不兴学 CSDN 呀&#xff0c;至少也得搞个 MD5 存一存吧。 不过 MD5 其实也没啥用&#xff0c;今天我们就来盘盘密码这种敏感信息该如何存储。…

Goland Cannot use ‘err‘ (type error) as the type any

问题描述&#xff1a; 用Goland写代码的时候&#xff0c;使用panic总是报错&#xff0c;官方用法也是报错&#xff0c;最后找到官方回复的链接&#xff0c;https://youtrack.jetbrains.com/issue/GO-12179/Cannot-use-err-type-error-as-the-type-any 问题解决方式&#xff1…

便利店小程序可以做哪些营销活动呢

在当今这个数字化时代&#xff0c;微信小程序已经成为了人们日常生活的一部分。对于便利店来说&#xff0c;拥有一个优秀的小程序不仅可以提高销售&#xff0c;还可以扩大品牌影响力&#xff0c;增加客户粘性。本文将探讨便利店小程序可以做什么样的营销活动&#xff0c;如何利…

Redis 排障:你永远不知道告警和下班,谁先到来?

01 第一个重点&#xff0c;服务排障的基本方法 在岁月静好的一天&#xff0c;正当笔者准备下班工作的时候&#xff0c;突然&#xff0c;告警出现了&#xff01; 嗯&#xff0c;又是一到下班就会告警&#xff01; 仔细一看&#xff0c;原来是数据整体处理时间的慢了。 既然慢了…

2023年全球新能源云母材料市场发展展望分析:储能云母市场规模快速增长[图]

云母作为电气设备的基础材料&#xff0c;下游应用领域涉及高温冶炼、电力等传统行业&#xff0c;并在近几年逐步扩展到新能源汽车、电化学储能等新兴行业。2022年&#xff0c;全球云母材料市场规模保持稳定增长至180.0亿元&#xff0c;期间年复合增长率约为13.2%。预计未来&…

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划&#xff08;三&#xff09; 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程(超详细)

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程 文章目录 NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程前言Serial Plotter测试前期准备打开工具方法 1方法 2 测试代码 总结 前言 在嵌入式的开发过程中&#xff0c;我们经常会采集一些传感器的数据&#xff0c…

iCloud涨价不用慌!学会使用群晖生态将本地SSD“上云”

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是想使用群晖生态软件&#xff0c;就必须要在服务端安装群晖系统&#xff0c;具体如何安装群晖虚拟机请参考&#xff1a; 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

本地PHP搭建简单Imagewheel私人云图床,在外远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言、Linux &#x1f325;️每日语录&#xff1a;追逐影子的人&#xff0c;自己就是影子。 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 1.前言 云存储在前几年风头无两&#xff0c;云存…

uniapp安卓 华为商店 vivo商店 oppo 小米 上架问题 Android中怎么才能不提前申请权限

问题描述 提交 小米 oppo 市场审核失败&#xff0c;原因是提前向用户申请开启通讯录、定位、短信、录音、相机和日历等权限。 解决方案&#xff1a; 是否有使用 READ_PHONE_STATE 权限&#xff0c;如果有使用 oaid 代替&#xff1b;是否有使用第三方 SDK&#xff0c;如果有关…

外部统一设置了::-webkit-scrollbar { display: none; }如何单独给特定元素开启滚动条设置样式-web页面滚动条样式设置

如果你在外部统一设置了​​::-webkit-scrollbar { display: none; }​​​来隐藏滚动条&#xff0c;但是想要在​​.lever​​元素中单独开启滚动条的样式&#xff0c;你可以使用CSS的级联选择器来覆盖外部样式。 以下是一个示例&#xff0c;展示如何给​​.lever​​单独开启…