leetcode第一刷_Unique Binary Search Trees[通俗易懂]

leetcode第一刷_Unique Binary Search Trees

大家好,又见面了,我是全栈君。

这道题事实上跟二叉搜索树没有什么关系,给定n个节点,让你求有多少棵二叉树也是全然一样的做法。思想是什么呢,给定一个节点数x。求f(x),f(x)跟什么有关系呢,当然是跟他的左右子树都有关系。所以能够利用其左右子树的结论。大问题被成功转化成了小问题。最熟悉的方法是递归和dp。这里显然有大量的反复计算。用dp打表好一些。

后来实验的同学说,这事实上是一个Catalan数,上网查了一下,果然啊。Catalan数是这样子的:

h(0) = 1, h(1) = 1;

递推式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2)

解为:h(n)=C(2n,n)/(n+1) (n=0,1,2,…)

当中数列的前几项是:1,2,5,14,42,非常多公司的笔试题都会问这个。通常是到5。知道了通项公式,直接秒杀。

Catalan数的应用当然不止求树的个数。还有非常多。算法考试中最难的一个题,问在多边形中放入不相交的对角线,一共同拥有多少种不同的分法,请依据矩阵相乘的方法来想。矩阵相乘在课堂上讲过。是在一连串的矩阵乘法中加入括号,使实际的乘法数最少。

原来都能够用Catalan数来解。

class Solution {
	public:
    		int numTrees(int n) {
        		vector<int> res(n+1, 0);
        		res[0] = 1;
       			for(int i=1;i<=n;i++){
        	    		for(int j=0;j<i;j++){
                			res[i] += res[j]*res[i-j-1];
            			}
        		}
        		return res[n];
    		}
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115272.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux系统日志管理详解

    linux系统日志管理详解了解日志文件记录了时间,地点,人物,事件四大信息,故系统出现故障时,可以查询日志文件。系统的日志文件默认都集中放置到/var/log/目录内,其中又以message记录的信息最多。日志文件的重要性主要体现在以下三方面:解决系统方面的错误解决网络服务的问题过往事件记录日志文件的权限通常是设置为root能够读取而已。由于日志文件可以记载系统很多的详细

    2022年5月25日
    42
  • googleearth离线地图_谷歌插件离线安装

    googleearth离线地图_谷歌插件离线安装Google离线地图API概要解析发布时间:2018-01-17版权: 1.说明离线地图发布有多种方式均可以实现,可以利用ArcGisServer、GeoServer等构建地图Web服务器,还可以使用谷歌地图、百度地图等API进行地图发布服务。本篇主要简单介绍如何调用Google离线地图API实现地图标注、获取坐标、及其他参数的设置。【如何发布Google离线地图】2.实…

    2025年11月28日
    6
  • python中sqrt的用法_Python中sqrt函数怎么用「建议收藏」

    python中sqrt的用法_Python中sqrt函数怎么用「建议收藏」Python中sqrt函数怎么用?下面给大家带来sqrt函数的相关介绍:Python数字sqrt()函数返回x的平方根(x>0)。语法以下是sqrt()方法的语法-importmathmath.sqrt(x)注意-此函数不可直接访问,需要导入math模块,然后需要使用math静态对象调用此函数。参数x-这是一个数字表达式。返回值该方法返回x的平方根(x>0)。sqrt()…

    2022年6月5日
    70
  • MyBatis+SpringBoot整合 注入SqlSessionTemplate

    MyBatis+SpringBoot整合 注入SqlSessionTemplate实际开发中我们操作数据库持久化,总是需要写重复的mapper,service,xml浪费了我们大量的时间,在这里推荐大家使用SqlSessionTemplate废话不多说直接上代码工具类接口层:packagecom.miaosuan.dao;importjava.util.List;importcom.miaosuan.dao.dbenums.NameSpaceEnum;…

    2022年5月6日
    57
  • windows10任务栏图标变白_为什么win10桌面图标会变成白色

    windows10任务栏图标变白_为什么win10桌面图标会变成白色在软件使用过程中,有时会发现任务栏的软件图标消失,变成了一个白色,方法一:将以下代码复制到记事本另存为:清理图标缓存.bat文件,然后双击运行此批处理文件即可(实际测试ok,推荐方法)。regdelete”HKEY_CURRENT_USER\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\TrayNotify”/va/ftaskkill/f/im…

    2022年10月9日
    3
  • 女生适合学习Java吗?

    女生适合学习Java吗?在这个信息爆炸的时代,互联网行业成为了高薪的代名词,Java技术因其具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,作为最流行的语言,学习的人也是越来越多。在很多人看来,学习java似乎是男生的专利,难道真的只有男生才能学好Java成为优秀的java工程师吗?“女生适合学Java吗?”“女程序员就业前景好不好?”“女生学Jav

    2022年7月8日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号