Day 41 动态规划part03 : 343. 整数拆分 96.不同的二叉搜索树

news2024/12/24 9:15:11

96. 不同的二叉搜索树

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

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19
class Solution(object):
    def numTrees(self, n):
        """
        :type n: int
        :rtype: int
        1.明确dp数组含义: dp[i]表示i对应的dp[i]二叉树的数目
        2.确实递推公式:dp[i] += dp[j - 1] * dp[i - j]; 
          j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量
        3.初始化dp数组: dp[0] = 1, dp[1] = 1, 
        4.确定遍历顺序: 从小到大遍历,大的值是小的值累加推出来的
        5.打印dp数组: debug

        time: O(n^2)
        space: O(n) 用于存储动态规划数组 dp
        """

        # 初始化dp数组
        dp = [0] * (n+1) # 考虑n = 0的特殊情况,所以n+1而不是n

        #base case
        dp[0] = 1
        dp[1] = 1

        
        for i in range(2, n+1):      # 遍历从1到n的每个数字
            for j in range(1,i+1): # 对于每个数字i,计算以i为根节点的二叉搜索树的数量
                # 利用动态规划的思想,累加左子树和右子树的组合数量
                dp[i] += dp[j - 1] * dp[i - j]  

        return dp[n]  

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

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

相关文章

【耗时50天报告】南卡/韶音/cleer等开放式耳机最详测评,2023开放式耳机机皇花落谁家

随着移动互联网的发展,蓝牙耳机已成为大众生活中不可或缺的移动设备。在蓝牙耳机这一种类中,开放式蓝牙耳机以其超强的舒适、安全、便携等优势而备受关注。相比传统蓝牙耳机,开放式耳机只需一个小巧的主体直接挂在耳朵上,不会给耳部带来任何压迫感,具有出色的通风性和舒适性&am…

【AIGC专题】Stable Diffusion 从入门到企业级实战0402

一、概述 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第02节&#xff0c; 利用Stable Diffusion ControlNet Openpose模型精准控制图像生成。本部分内容&#xff0c;位于整个Stable Diffusion生…

文件系统与inode编号

文件描述符fd 0&1&2 Linux 进程默认情况会有3个缺省打开的文件描述符&#xff0c;分别是标准输入0&#xff0c; 标准输出1&#xff0c; 标准错误2. 0,1,2对应的物理设备一般是&#xff1a;键盘&#xff0c;显示器&#xff0c;显示器 所以输入输出还可以采用如下方式 …

晶圆键合对准机的原理与应用

一、晶圆键合设备的工作原理 1、 第一个晶圆面朝下置于晶圆对准设备卡盘并传送到对准机内&#xff1b; 2、对准机内&#xff0c;晶圆在Z轴方向上移动直到被顶部的传输夹具真空吸附固定&#xff1b; 3、被传输夹具固定的第一个晶圆将成为后续对准工艺的基准&#xff0c;确定所…

SAP 获取本机信息(IP及电脑名称)<转载>

原文链接&#xff1a;https://blog.csdn.net/JYH1999/article/details/126489974 导语&#xff1a;最近在做日志的东西&#xff0c;需要记录用户的IP&#xff0c;以及电脑名称&#xff0c;找了一下&#xff0c;SAP有两个类可以实现。 一、效果展示 二、代码 *&----------…

一文学会K8s集群搭建

环境准备 节点数量&#xff1a;2台虚拟机 centos7硬件配置&#xff1a;master节点内存至少3G&#xff08;2G后面在master节点初始化集群时会报错&#xff0c;内存不够&#xff09;&#xff0c;node节点可以2G&#xff0c;CPU至少2个&#xff0c;硬盘至少30G网络要求&#xff1…

双向圆周阵列及阵列间距调整

SOLIDWORKS提供的阵列功能是非常实用的快速建模功能&#xff0c;可以帮助我们快速的形成重复特征。在以往的版本中&#xff0c;无论是线性阵列还是其他阵列都提供了可以双向进行的阵列选项。也就是可以帮助我们保证两个方向的阵列属性。 今天我们要讲的是在圆周阵列中增加双向的…

【EPLAN】统一修改项目中字体大小

需求&#xff1a;当A3图框时&#xff0c;“设备标识符”等字体太小&#xff0c;影响查看图纸。需要统一调大。 通过“层管理”改变字体大小。 “项目数据”->“层管理” 找到需要改变字体的大小如“设备标识符”&#xff1a; Over。 效果&#xff08;2.5mm 调整到了 3.5mm&a…

我国元宇宙专利申请位列全球靠前,UTONMOS元宇宙游戏体验再升级

中青网报道 近日&#xff0c;2023年服贸会数字贸易发展趋势和前沿高峰论坛举办并发布了《中国元宇宙产业发展趋势洞察》报告。报告指出我国元宇宙相关专利申请量位列全球第二。 元宇宙是虚拟世界和现实世界融合的载体&#xff0c;正成为驱动数字经济发展和助力数字中国建设的重…

【python基础知识】0.print()函数

文章目录 前言print()函数无引号单引号的用法双引号的用法三引号的用法转义字符 变量和赋值变量的命名规范 下关预告 前言 Python就是一个能够帮你实现需求的工具&#xff0c;它更像是一把万能钥匙&#xff0c;决定用它来打开哪一扇门的&#xff0c;是你自己。 『千里之行&am…

2.1 PE结构:文件映射进内存

PE结构是Windows系统下最常用的可执行文件格式&#xff0c;理解PE文件格式不仅可以理解操作系统的加载流程&#xff0c;还可以更好的理解操作系统对进程和内存相关的管理知识&#xff0c;在任何一款操作系统中&#xff0c;可执行程序在被装入内存之前都是以文件的形式存放在磁盘…

阿里云2核4G服务器5M带宽五年租用价格表

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G4M带宽服务器297元一年&#xff0c;2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等&#xff0c;买5年可以享受3折优惠&#xff0c;阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

Java“牵手”阿里巴巴店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,阿里巴巴店铺所有商品API申请指南

阿里巴巴平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取阿里巴巴整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台…

了解被测系统(一)技术架构

目录 web应用组成 项目实例 系统架构图 整体架构图 web应用组成 从开发者的角度来看&#xff0c;web 应用主要由三部分组成: 用户界面&#xff0c;业务逻辑&#xff0c;数据。 1.用户界面(视图层) 用于将数据展示给用户的地方&#xff0c;采用 HTML&#xff0c;CSS&…

【Linux内核】以共享内存的方式实现进程间通信

现在有很多进程间通信的模式&#xff0c;但是我们选择一个简单的IPC机制&#xff08;共享内存&#xff09;来实现&#xff0c;并让它工作起来。 简单来讲我们实现了两个系统调用&#xff08;不可避免地需要我们完善IDT&#xff09;&#xff0c;发送方查看接受方是否接收&#…

配电室智能运维解决方案

配电智能运维服务是以电易云-智慧电力物联网平台为核心&#xff0c;通过对配电室(或箱变)、高、低压配电柜加装在线监测装置&#xff0c;将运行状态实时传输到电易云平台&#xff0c;人工24小时运维值班&#xff0c;为客户提供大数据时代下的电力运维解决方案&#xff0c;更好的…

基于springboot绩效管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

2.5 PE结构:导入表详细解析

导入表&#xff08;Import Table&#xff09;是Windows可执行文件中的一部分&#xff0c;它记录了程序所需调用的外部函数&#xff08;或API&#xff09;的名称&#xff0c;以及这些函数在哪些动态链接库&#xff08;DLL&#xff09;中可以找到。在Win32编程中我们会经常用到导…

修改 gc2093.c 驱动程序改变摄像头预览的镜像效果

原理 查看gc2093芯片手册&#xff0c;修改寄存器0x0017的数值&#xff0c;可以修改摄像头预览镜像效果。如下&#xff1a; #define GC2093_MIRROR_FLIP_REG 0x0017 #define MIRROR_MASK BIT(0) #define FLIP_MASK BIT(1) 方法 通过修改 gc2093.c 驱动程序可以改变摄像头预览…

NET7快速开发一个商品管理模块-商品列表开发(一)

商品管理模块&#xff0c;一般包含以下几个模块&#xff1a; 商品列表&#xff1a;这里可以看到所有已发布的商品信息列表。 商品管理&#xff1a;添加商品、编辑商品以及删除商品。 具体功能如下图&#xff1a; 1.商品列表 2.添加商品 3.商品SKU编辑