leetcode 96. Unique Binary Search Trees

浅谈Android MVI架构---大自然的搬运工~~~ 浅谈 Android MVI架构 阅读详情

Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?

Example:

Input: 3
Output: 5
Explanation:
Given n = 3, there are a total of 5 unique BST’s:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

给出数字n,问从1到n的这n个点,可以组成多少个binary search tree

二叉搜索树条件:左子树 < root < 右子树

思路:
dynamic programming
定义dp数组treeNum[n+1]

n = 1时,一个节点是1个BST,即treeNum[1] = 1

n = 2时,节点是1,2
顺序假设1,2是root:
1作root时,左子树是0个节点,右子树是{2},即1个节点
那么BST的总数量应该是左子树的数量 * 右子树数量(可以画出来)
treeNum[2] = treeNum[0] * treeNum[1]

而已经知道treeNum[1] = 1
左边是0个节点相当于所有剩余节点都在右子树,只需要知道右子树的数量就行了,
即1为root时, treeNum[2] = treeNum[1],
但是为了利用treeNum[2] = treeNum[0] * treeNum[1] = 1
定义treeNum[0] = 1

当2为root时,左子树一个节点{1}, 右边0个节点, 和之前的一种情况相加
所以treeNum[2] += treeNum[1] * treeNum[0] = 2

以此类推
3个节点时:1,2,3
1为root:左子树0个节点,右子树{ 2, 3}
treeNum[3] += treeNum[0] * treeNum[2]
2为root:
treeNum[3] += treeNum[1] * treeNum[1]
3为root:
treeNum[3] += treeNum[2] * treeNum[0] = 5

为了求n个节点有多少个BST,需要顺序求出2~n-1个节点有多少个BST
假设i是从2~n-1
对某个 i,需要从左到右假设每个点 j 是root
看 j 左边有几个节点作为左子树,右边有几个节点作为右子树
即treeNum[j] = treeNum[j] * treeNum[i - j - 1]

    public int numTrees(int n) {
        if (n <= 1) {
            return n;
        }
        
        int[] treeNum = new int[n + 1];
        treeNum[0] = 1;
        treeNum[1] = 1;
        
        for (int i = 2; i <= n; i++) {
            for (int j = 0; j < i; j++) {
                treeNum[i] += treeNum[j] * treeNum[i - j - 1];
            }
        }
        
        return treeNum[n];
    }
【C++实战(62)】从0到1:C++打造TCP网络通信实战指南 本文是 C++ 网络编程实战专栏第 62 篇,聚焦 TCP 客户端与服务端开发。先阐述 TCP 协议特点、核心 API 及阻塞与非阻塞 IO 区别,打牢基础;再详解 TCP 服务端初始化、客户端连接处理与数据收发,以及客户端初始化、异常处理和协议设计;最后通过简易聊天系统实战,介绍线程池应用、协议解析及稳定性测试,助力开发者掌握 TCP 网络编程实操技能。 阅读详情

相关推荐

ANSYS APDL齿轮建模实战:从渐开线方程到完整3D模型的保姆级教程

本文详细介绍了使用ANSYS APDL进行齿轮建模的全过程,从渐开线方程的数学基础到完整3D模型的创建。通过参数化命令流实现高精度齿轮建模,特别适合机械设计和仿真分析需求。教程包含关键参数计算、APDL环境配置、单齿齿廓建模以及全齿轮阵列复制等实用技巧,帮助工程师快速掌握ANSYS APDL在齿轮建模中的应用。

lg888的博客 447

96. Unique Binary Search Trees

96. 不同的二叉搜索树 给定一个整数 n,求以1 ...n为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 ...

GGGGITFKBJG的主页 198

一文解读DeepSeek训练数据集

本文重点以DeepSeek为例,详细介绍预训练数据集相关内容。大语言模型LLM(如DeepSeek、ChatGPT、文心一言等)的“智慧”源于它们学习的海量数据集。简单来说,数据集就是模型的“知识库”,通常由互联网公开的文本、图片、视频等。这些数据需满足两个特点:规模大和多样性。规模大是指数据量可达千亿级词汇,让模型学习复杂规律;多样性则涵盖多领域(如科技、文学)、多语言、多形式(对话、新闻),帮助模型适应不同场景。例如,训练数据中既有百科知识,也有日常对话,模型才能既解答专业问题,又能闲聊。

u013891230的博客 7091

[leetcode] 96. Unique Binary Search Trees

96. Unique Binary Search TreesDescriptionAnalysisCode Description Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n? Example: Input: 3 Output: 5 Explanation: Gi...

annazzz的博客 341

Flowable任务节点动态预测:基于任务ID与参数获取下一节点及候选分配策略

本文深入探讨了Flowable工作流引擎中任务节点动态预测功能的实现。通过解析任务ID与运行时参数,模拟流程执行路径,精准预测下一节点及候选用户/组集合,从而提升用户体验与系统透明度。核心在于利用自定义命令实现表达式求值,并深度解析候选者分配策略,确保预测结果与实际流程执行一致。

nnn11的博客 744

麒麟系统下的多媒体革命:VLC在kylinV10上的性能优化与调试技巧

本文详细介绍了在麒麟kylinV10系统上优化VLC多媒体播放性能的实战技巧,特别针对飞腾FT-2000/4硬件平台。从源码编译调优到硬件加速配置,提供全面的性能提升方案,帮助开发者在国产操作系统上构建高效媒体播放环境。

weixin_29168675的博客 458

96. 不同的二叉搜索树(Unique Binary Search Trees)

96. 不同的二叉搜索树(Unique Binary Search Trees)题解动态规划复杂度分析PythonJava(待完成) 题解 典型的卡特兰数问题,可使用动态规划来解决。 设nnn个结点的二叉搜索树的种类为G(n)G(n)G(n),f(i)f(i)f(i)表示以iii为根节点的二叉搜索树的种数。可得: G(n)=f(1)+f(2)+⋯+f(n)G(n)=f(1)+f(2)+\cdots...

朱师傅的博客 227

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1374

96. Unique Binary Search Trees 独一无二的二叉搜索树——卡特兰数的应用

题解: 与卡塔兰数 Catalan Number 有关 公式: (dp[i] 表示当有i个数字能组成的 BST 的个数) 按照中序遍历的方式排列:左子树<根节点<右子树 n = 0 时,空树也算一种二叉搜索树,dp[0]=1; n = 1 时,左右子树都是空树,左子树个数乘以右子树的个数, dp[0]*dp[0] = 1; n = 2 时,1和2都可以为根, dp[2] = dp[0] * dp[1]  (1为根的情况,则左子树一定不存在,右子树可以有一个数字)     +

luo8991的博客 345

5GS 协议栈 — PFCP 协议 — URR 用量上报规则

目录 文章目录目录URR 用量上报规则UEE 的参数Usage Report 的参数示例 URR 用量上报规则 29244 5.2.2 Usage Reporting Rule URR 的作用? 用来告诉 UPF 如何对 PDR 识别的 SDF 或 Application 业务进行使用量统计信息的上报。CP 收到 Report Information 后,可用于计费或者管控(e.g. 超量限速)等用途。 URR 在哪个流程里下发的? N4 会话建立流程。 N4 会话修改流程。 URR 是怎么工作

烟云的计算 4592

RT-DETR模型应用过程中的报错处理及疑问解答,涉及环境搭建、模型训练、模块改进、论文写作

本文记录了RT-DETR模型的这一系列过程中可能发生的问题,以及大家非常关心的问题,这里统一做了一个记录和解答。

Limiiiing的博客 1770

Leetcode96. Unique Binary Search Trees

Leetcode96. Unique Binary Search Trees Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n? Example: Input: 3 Output: 5 Explanation: Given n = 3, there are a to...

magic_jiayu的博客 165

跨平台也要跑得像原生一样顺:SAP GUI for Java 的安装、配置、运维与自动化实战

摘要:SAP GUI for Java 作为跨平台客户端解决方案,在 S/4HANA 时代仍发挥关键作用,特别适用于 macOS/Linux 环境下的 ABAP 开发和系统运维。其主要优势包括:平台无关性(支持 Windows/macOS/Linux/UNIX)、与 Windows 版本一致的交互体验、对核心事务码(如 ST22/SM21)的完整支持。版本管理需注意 7.80 已停止支持,建议升级至 8.10。安装支持原生包和通用 JAR 两种方式,推荐团队标准化版本和连接配置(通过 SAP UI Land

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 681

[leetcode]96. Unique Binary Search Trees

[leetcode]96. Unique Binary Search Trees Analysis intern intern intern—— [每天刷题并不难0.0] Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n? 动态规划解决,状态转移方程: DP[...

weixin_32135877的博客 151

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode96——Unique Binary Search Trees

LeetCode96——Unique Binary Search Trees 结构不同的二叉树的个数,用卡特兰数直接求解

上善若水 467

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

leetcode专题训练96 Unique Binary Search Trees

解法1: 这道题和95题 Unique Binary Search Trees II很像,但是解题思路却相差很多。先用上一道题的思路按照递归写了一下,最后TLE超时了,后来想了一下超时原因,发现这道题由于只用输出个数,不用输出具体的树,所以右边界和左边界的差值相同的子树,数量都是相同的,所以就可以打个表,把已经算过的右边界和左边界的差值记录下来,下次再遇到相同的范围时,可以直接从表中获得结果,不用再回溯了。 需要注意在为表赋初始值时,一定要注意这个初始值能否真正到达。最开始我设置了result_list[1

Ema1997的博客 257

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

leetcode 95. Unique Binary Search Trees II | 96. Unique Binary Search Trees

95. Unique Binary Search Trees II https://leetcode.com/problems/unique-binary-search-trees-ii/ 题解 题是好题,可惜我自己想不出来,后来偷看了答案。 难点在于在何处进行 list.add(root);,以及在修改树的形状时候,如何实现所谓的“深拷贝”,而不让树与树之间相互影响。 /** * Definition for a binary tree node. * public class TreeNode {

寒泉 4万+

LeetCode96:Unique Binary Search Trees

Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For example, Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \

3452

【leetcode】96. Unique Binary Search Trees

96.Unique Binary Search Trees Givenn, how many structurally uniqueBST's(binary search trees) that store values 1 ...n? Example: Input: 3 Output: 5 Explanation: Given n = 3, there are a total ...

lemonade13的博客 235

LeetCode 96. Unique Binary Search Trees

原题目:https://leetcode-cn.com/problems/unique-binary-search-trees/ 思路1: 直觉就是递归的实现,每一次以i为根节点,i-1个数字为左子树,n-i个数字为右子树,则以i为根的二叉树数目是两个的乘积。 但是超时了,思路二进行优化。 代码: class Solution { public: int numTrees(int n) { if(n==0 || n==1) return 1; ..

庾信平生最萧瑟 215

LeetCode-96. Unique Binary Search Trees

题目描述(中等难度) 解法一 递归 可以参考第95题 对于这道题,我们会更简单些,只需要返回树的数量即可。求当前根的数量,只需要左子树的数量乘上右子树。 public int numTrees(int n) { if (n == 0) { return 0; } return getAns(1, n); } private int getAns(int start, int end) { int ans = 0; //此时没有数字,只有一个数

猫敷雪 455

LeetCode(96) Unique Binary Search Trees

题目Given n, how many structurally unique BST’s (binary search trees) that store values 1…n?For example, Given n = 3, there are a total of 5 unique BST’s. 分析此题与上题本质相同,LeetCode 95 Unique Binary Search T

指尖飞舞 1046

【Leetcode】96. Unique Binary Search Trees

题目地址: https://leetcode.com/problems/unique-binary-search-trees/ 问数值为1∼n1\sim n1∼n恰好nnn个节点的二叉搜索树有多少个。 思路是动态规划。设有f[n]f[n]f[n]个,则其左右子树节点数的可能性为(0,n−1),(1,n−2),(2,n−3),...,(0,n−1)(0,n-1),(1,n-2),(2,n-3),...,(0,n-1)(0,n−1),(1,n−2),(2,n−3),...,(0,n−1),所以f[n]=∑i=0

数学、算法爱好者的博客 175

Leetcode 96 Unique Binary Search Trees

题目链接:96. Unique Binary Search Trees 题目描述 Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n? 简而言之:给定1...n这N个数,问有多少种构造BST的方案。 Example: Inpu...

Mereder的博客 173

Leetcode 96. Unique Binary Search Trees

Leetcode 96. Unique Binary Search Trees Given n, how many structurally unique BST’s (binary search trees) that store values 1…n? For example, Given n = 3, there are a total of 5 unique BST...

TooSchoolForCool 261
上一篇: leetcode 64. Minimum Path Sum(最小路径和)
下一篇: leetcode 134. gas station
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值