【动态规划-卡特兰数——96.不同的二叉搜索树】

1.题目解析

题目来源

|-------------------------------------------------------------------------------------------------------------------|
| 96.不同的二叉搜索树------力扣 |

测试用例

2.算法原理

1.状态表示

2.状态转移方程

3.初始化

需要用到前面位置的值,则需要初始化dp[0]为1,方便后续的填表

4.填表顺序

从前向后

5.返回值

根据状态表示返回dp[n]

3.实战代码

cpp 复制代码
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];
    }
};

代码解析

相关推荐
爱吃生蚝的于勒1 分钟前
【Linux】网络之http协议
linux·运维·服务器·网络·数据结构·c++·http
2501_945424803 分钟前
高性能计算资源调度
开发语言·c++·算法
fakerth5 分钟前
【Linux】调度器底层原理深入探索
linux·c++·操作系统
TTTrees10 分钟前
C++学习笔记(33):智能指针(工厂函数)
c++
Tisfy11 分钟前
LeetCode 1594.矩阵的最大非负积:动态规划O(mn)
leetcode·矩阵·动态规划·dp
2301_7765087211 分钟前
C++中的组合模式变体
开发语言·c++·算法
历程里程碑13 分钟前
44. TCP -23Linux聊天室实现命令符功能
java·linux·开发语言·数据结构·c++·排序算法·tcp
Frostnova丶14 分钟前
LeetCode 1594.矩阵中最大的非负乘积
算法·leetcode·矩阵
We་ct14 分钟前
LeetCode 162. 寻找峰值:二分高效求解
前端·算法·leetcode·typescript·二分·暴力
丶小鱼丶15 分钟前
数据结构和算法之【二叉树】
java·数据结构·算法