news 2026/9/20 13:21:41

豆包 LeetCode 96. 不同的二叉搜索树 Rust实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
豆包 LeetCode 96. 不同的二叉搜索树 Rust实现

LeetCode 96. 不同的二叉搜索树 Rust 实现

函数签名: pub fn num_trees(n: i32) -> i32

解法1:动态规划 O(n²)

rust

pub struct Solution;

impl Solution {
pub fn num_trees(n: i32) -> i32 {
let n = n as usize;
let mut dp = vec![0; n + 1];
dp[0] = 1;
dp[1] = 1;

for i in 2..=n { for j in 1..=i { dp[i] += dp[j - 1] * dp[i - j]; } } dp[n] }

}

dp[i]:i 个节点能够组成的二叉搜索树数量。
枚举根 j,左子树 j‑1 个点,右子树 i‑j 个点,乘积累加。

解法2:卡特兰数学公式 O(n)(最优)

卡特兰数:C_{n}=\dfrac{1}{n+1}\dbinom{2n}{n}

rust

pub struct Solution;

impl Solution {
pub fn num_trees(n: i32) -> i32 {
let mut res: i64 = 1;
for i in 1…=n as i64 {
res = res * (n as i64 + i) / i;
}
res = res / (n as i64 + 1);
res as i32
}
}

要点

  1. 使用 i64 防止中间乘法溢出。
  2. 公式版时间 O(n)、空间 O(1)。
  3. n ≤ 19,i32 可以存下结果。

需要 C++ / Go / Java / TypeScript 版本吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 13:21:40

Ruffle Flash 模拟器实战指南:3 条路让老游戏与老动画再次跑起来

Ruffle Flash 模拟器实战指南:3 条路让老游戏与老动画再次跑起来 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle 打开五年前收藏的页面,动画该出现的位置只剩灰白方…

作者头像 李华
网站建设 2026/9/20 13:19:13

Excel Power Query自动获取股票历史数据实战指南

1. 为什么我最终放弃了手动更新股票数据做股票复盘这件事,我坚持了快六年。前三年一直用最笨的办法:每天收盘后打开行情软件,把自选股的收盘价、成交量、涨跌幅一个个敲进Excel表格里。十几只股票还好,后来自选池扩到五六十只&…

作者头像 李华
网站建设 2026/9/20 13:19:01

通达信L2资金流向函数实战:从原理到公式编写与参数调优

1. 先搞清楚L2资金流向到底在算什么很多人一看到“L2资金流向”就觉得是个黑箱,券商软件里红红绿绿的柱子,到底怎么来的?其实拆开看并不复杂。通达信的L2数据本质上是逐笔成交的委托队列快照,它比普通Level-1行情多了两样东西&…

作者头像 李华
网站建设 2026/9/20 13:18:14

把 OpenClaw 的 Base URL 改到 TaoToken 后,中间件怎么统计请求耗时

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华