最近在写动态规划的题目,这些题目的标签都标有数学,说来也是找规律题,但是这个规律真不是正常情况下可以找到的,即使看了解析有时候也写不出来,今天难得看了点解析就自己写出来的,因此分享一下这道题的想法和题解。
废话少说,我们直接进入正题,首先要了解二叉搜索树的特点:根节点的左子树上所有节点都小于根节点,右子树上所有节点都大于根节点。然后就是找规律,以n=3为例:以1为根节点时,其余元素都大于1,左子树节点数为0,结果记为一次,右子树节点为2,在不考虑数值的话左右子树排列总数就等于n=2时候的值,即当1为根节点时结果数位arr[0]*arr[2];当2为根节点时,剩余节点一个大于2一个小于2,即左右子树各有一个节点,在不考虑值得情况下此时结果为arr[1]*arr[1];当3为根节点时,思路和1为根节点相同,只是所有节点都小于3,因此所有节点都在左子树上,右子树上的节点数为0,即结果为arr[2]*arr[0]。那么n=3能产生的不同二叉搜索树有arr[0]*arr[2]+arr[1]*arr[1]+服务器托管网arr[2]*arr[0]个。
由题意可计算出arr[1]=1,arr[2]=2,arr[3]=5,代码如下:
var numTrees = function (n) {
le服务器托管网t arr = new Array(n + 1).fill(0)//创建数组时创建n+1个,写的时候不会受到索引和n值差异的影响。
arr[0] = 1, arr[1] = 1, arr[2] = 2, arr[3] = 5//当n=0时结果也可看成只有一次。
for (let i = 4; i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
二、移动WEB开发之flex布局 1、flex 布局体验 1.1 传统布局与flex布局 传统布局:兼容性好、布局繁琐、局限性、不能再移动端很好的布局 flex弹性布局:操作方便,布局极为简单,移动端应用很广泛;PC 端浏览器支持情况较差;IE 11或更低版本…