【代码随想录day24】不同的二叉搜索树

news2024/11/27 2:14:47

题目 

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

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19

代码 

定义dp[i]为由i个节点组成的二叉排序树有dp[i]种。

我们可以从节点数i为2开始遍历,每次遍历分别用j表示根节点左子树有j个节点,那对应右子树就有i-j-1个节点,那么左右子树分别能够组成的二叉排序树就是dp[j]和dp[i-j-1]种 ,j的取值范围是从0到i-1。题目要求的就是dp[j]*dp[i-j-1]。

这里当左右子树有为空的时候,我们应该把他当成1,不然dp[j]*dp[i-j-1]就是0了,但这种情况也是合理的,因此处理一下得到:dp[i]+=max(1,dp[j])*max(1,dp[i-j-1])。

class Solution:
    def numTrees(self, n: int) -> int:
        dp = [0 for _ in range(n+1)]
        dp[1]=1

        for i in range(2,n+1):
            for j in range(i):
                dp[i]+=max(1,dp[j])*max(1,dp[i-j-1])
        return dp[n]

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

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

相关文章

TOWE模块化积木式定制PDU的应用优势

随着计算机网络技术发展&#xff0c;服务器、交换机、各种电子设备等关键设备的需求也日益增加&#xff0c;其承担的业务越来越关键&#xff0c;对设备所处的环境&#xff08;如机房、机柜等&#xff09;要求也越高&#xff0c;所有参与关键设备运行的设施都必须具有高可靠性与…

给苹果手机相册上锁,有3种方法!

手机跟个人的联系越来越密切&#xff0c;总有些不想让别人看到的图片。如果你使用的恰好是苹果手机&#xff0c;想要隐藏相册里的图片&#xff0c;要怎么做&#xff1f;本篇教大家3个方法。 方法1 将iOS更新至16.0版本&#xff0c;打开苹果手机的【设置】&#xff0c;点击【照…

Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装

Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 目录 Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装 一、简单介绍 二、ControlNet 插件下载安装 三、ControlNet 插件模型下载安装 四、ControlNet 插件其他的下载安装方式 五、Co…

原来Linux这么牛:称霸全球超级电脑 500 强!

还记得之前《全球超级电脑 500 强&#xff0c;中国拿走冠亚军》新闻&#xff1f;虽然昔日超级电脑强权的美国在超级计算机竞赛中落后&#xff0c;但不管哪国打造的超级电脑&#xff0c;还有一件事情值得留意喔──几乎全部都是执行以 Linux 为基础的操作系统&#xff08;注&…

视频号小店怎么进优选联盟?聊下视频号店铺的选品细节,建议收藏

我是王路飞。 视频号小店可能还有很多人不太了解&#xff0c;但是你要知道&#xff0c;红利与机会从来不会消失。 它只会悄悄的转移&#xff0c;转移到你的认知以外&#xff0c;转移到那些新的平台&#xff0c;转移到那些被人忽略的事情里面。 而视频号小店就是目前除了抖音…

【PowerQuery】连接组的复制与粘贴

在实际的应用场景中&#xff0c;单一连接的场景非常少见。通常存在着两个或者两个以上的PowerQuery数据源。在这类场景下一个一个的复制数据源效率非常低下&#xff0c;是否存在更加有效率的数据源复制方式呢&#xff1f;接下来分享的连接组功能就是这样的概念。在PowerQuery中…

动手实践:从栈帧看字节码是如何在 JVM 中进行流转的

Java全能学习面试指南&#xff1a;https://www.javaxiaobear.cn/ 前面我们提到&#xff0c;类的初始化发生在类加载阶段&#xff0c;那对象都有哪些创建方式呢&#xff1f;除了我们常用的 new&#xff0c;还有下面这些方式&#xff1a; 使用 Class 的 newInstance 方法。使用…

【C++】—— 特殊类设计

目录 序言 &#xff08;一&#xff09;设计一个不能被拷贝的类 &#xff08;二&#xff09;设计一个只能在堆上创建对象的类 &#xff08;三&#xff09;设计一个只能在栈上创建对象的类 &#xff08;四&#xff09;设计一个不能被继承的类 总结 序言 特殊类设计是指在面…

AR产业变革中的“关键先生”和“关键力量”

今年6月的WWDC大会上&#xff0c;苹果发布了头显产品Vision Pro&#xff0c;苹果CEO库克形容它&#xff1a; 开启了空间计算时代。 AR产业曾红极一时&#xff0c;但因为一些技术硬伤又减弱了声量&#xff0c;整个产业在起伏中前行。必须承认&#xff0c;这次苹果发布Vision P…

百度文心一言可以接入微信小程序啦!

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感 …

python学习之【深拷贝】

#我的编程语言学习笔记# 前言 上一篇文章python学习之【浅拷贝】 学习了python中的浅拷贝相关内容&#xff0c;这篇文章接着学习深拷贝。 简单回顾 浅拷贝只拷贝浅层元素&#xff0c;深层元素的内存地址不改变 &#xff1b;当对拷贝产生的新的对象的浅层元素进行更改时&…

擎创技术流 | 深入浅出运维可观测工具(三):eBPF如何兼容多架构模式性能管理

嗨~又见面了大家&#xff01; 之前给大家分享过2篇eBPF技术干货&#xff0c;后台收到的反馈还挺好的&#xff0c;以至于总有朋友过来催更这一系列&#xff0c;这不第3篇在大家的千呼万唤下终于出来了。 新来的朋友点这里&#xff0c;键回看eBPF精彩技术贴&#xff0c;别忘了随…

Vue2安装vuex和vue-router报错处理

Vue2安装vuex和vue-router报错处理 Vue2.6安装VuexVue2.6安装vue-router Vue2.6安装Vuex 报错信息 处理方法 #查看vuex版本 npm view vuex versions --json #安装合适版本 npm install vuex3.6.2 --saveVue2.6安装vue-router 报错信息 处理方法 #查看vue-router版本 npm…

2009-2022年商业银行竞争度数据(勒纳指数)(含原始数据和计算代码 dofile+结果)

2009-2022年商业银行竞争度数据&#xff08;勒纳指数&#xff09;&#xff08;含原始数据和计算代码 dofile结果&#xff09; 1、时间&#xff1a;2009-2022年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;证券代码、证券简称、上市日期、年份、资产总计、利息支出、…

C语言系统化精讲(一):C 语言开发环境搭建

文章目录 一、Windows 开发环境搭建1.1 安装 mingw 编译器1.2 下载并安装 CLion1.3 启动 CLion 二、Linux 开发环境搭建&#xff08;建议使用&#xff09;2.1 VMware Workstation Pro软件简介及安装2.2 安装 Ubuntu 系统2.2.1 Ubuntu 下载2.2.2 安装 Ubuntu2.2.3 安装共享文件夹…

汽车3D HMI图形引擎选择

2002年,电影《少数派报告》让观众深入了解未来。 除了情节的核心道德困境之外,大多数人都对它的技术着迷。 我们看到了自动驾驶汽车、个性化广告和用户可以无缝交互的 3D 计算机界面。 令人惊讶的是,虽然故事发生在 2054 年,但许多科幻想象的作品已经成为现实。 对于汽车和…

【C++】STL-常用算法-常用遍历算法

0.前言 1.for_each #include <iostream> using namespace std;// 常用遍历算法 for_each #include<vector> #include<algorithm>//普通函数 void print01(int val) {cout << val << " "; }//仿函数 class Print02 { public:void oper…

Playwright for Python:断言

一、支持的断言 Playwright支持以下几种断言&#xff1a; 断言描述expect(locator).to_be_checked()复选框被选中expect(locator).to_be_disabled()元素是禁用状态expect(locator).to_be_editable()元素是可编辑状态expect(locator).to_be_empty()容器是空的expect(locator).…

重复的DNA序列(力扣)JAVA

DNA序列 由一系列核苷酸组成&#xff0c;缩写为 ‘A’, ‘C’, ‘G’ 和 ‘T’.。 例如&#xff0c;“ACGAATTCCG” 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s &#xff0c;返回所有在 DNA 分子中出现不止…