首页 > 编程语言 >java数据结构与算法刷题-----LeetCode95. 不同的二叉搜索树 II

java数据结构与算法刷题-----LeetCode95. 不同的二叉搜索树 II

时间:2024-03-31 10:31:20浏览次数:14  
标签:right TreeNode dfrac 分治 LeetCode95 II java 卡特兰 left

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

在这里插入图片描述

分治回溯+记忆化搜索

卡特兰数,例如对于n个进栈元素,有多少种出栈顺序,就可以用卡特兰数来求,公式为 1 n + 1 C n m = 1 n + 1 A n m A m m \dfrac{1}{n+1}C_{n}^m =\dfrac{1}{n+1} \dfrac{A_{n}^m}{A_{m}^m} n+11​Cnm​=n+11​Amm​Anm​​,例如n = 3时,有 1 4 ∗ 6 ∗ 5 ∗ 4 3 ∗ 2 ∗ 1 = 5 \dfrac{1}{4}*\dfrac{6*5*4}{3*2*1} = 5 41​∗3∗2∗16∗5∗4​=5种出栈顺序

  1. A n m = A_{n}^m = Anm​=从n开始从大往小,m个数相乘
  2. C n m = A n m A m m C_{n}^m = \dfrac{A_{n}^m}{A_{m}^m} Cnm​=Amm​Anm​​
  3. 例如 C 2 n n = A 2 n m A n n C_{2n}^n = \dfrac{A_{2n}^m}{A_{n}^n} C2nn​=Ann​A2nm​​
  4. 例如n = 3时, C 2 n n = C 6 3 = A 6 3 A 3 3 = 6 ∗ 5 ∗ 4 3 ∗ 2 ∗ 1 = 20 C_{2n}^n = C_{6}^3 = \dfrac{A_{6}^3}{A_{3}^3} = \dfrac{6*5*4}{3*2*1} = 20 C2nn​=C63​=A33​A63​​=3∗2∗16∗5∗4​=20
解题思路:时间复杂度O( n ∗ n 的卡特兰数 n*n的卡特兰数 n∗n的卡特兰数),对每一个结点作为根结点的枚举,都需要n的卡特兰数的时间复杂度,因为它的过程和不同出栈顺序一样。空间复杂度O( n ∗ n 的卡特兰数 n*n的卡特兰数 n∗n的卡特兰数)
  1. 先通过分治来划分回溯区域,例如1,2,3, 先让1来分治,然后1和2来分治,然后2和3来分治,最后1,2,3来分治
  2. 分治划分区域后,开始回溯枚举,枚举用不同数字来当根结点的划分方式

并以当前根结点为中心,左右划分两个区域继续分治

  1. 因为是升序需要,当我们选择一个数字作为根结点,其左边比它小的都在左子树,比它大的都在右子树。具体可以参考96题,因为这道题是96题的衍生题

标签:right,TreeNode,dfrac,分治,LeetCode95,II,java,卡特兰,left
From: https://blog.csdn.net/grd_java/article/details/137084792

相关文章

  • java毕业设计社团物品租赁小程序(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义一、选题背景:随着校园文化的繁荣和学生社团活动的增多,各类社团对于特定物品的需求日益增长。这些物品包括活动器材、会议设备、表演服装等,购买成本高且使用频率不......
  • java毕业设计汽车服务系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着科技的进步和汽车产业的迅猛发展,汽车行业的竞争已经从单纯的价格竞争逐渐转向服务竞争。消费者对汽车服务的需求日益增长,不仅关注汽车的性能、外观和......
  • java毕业设计社团管理系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着高校教育的不断发展,学生社团作为校园文化的重要组成部分,承担着丰富学生课余生活、培养学生兴趣爱好、提升学生实践能力的重要职能。然而,传统的社团管......
  • java毕业设计实验室资源管理(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义一、选题背景:在高等教育和科研机构中,实验室是进行教学和科学研究的重要场所。一个现代化的实验室通常拥有大量昂贵的设备、仪器和材料。如何有效地管理这些资源,确......
  • Java插值查找知识点(含面试大厂题和源码)
    插值查找(InterpolationSearch)是一种改进的二分查找算法,适用于数据分布均匀的有序数组。插值查找的基本思想是,根据要查找的关键字与数组的最大值和最小值之间的比例,预测关键字可能存在的位置,从而跳过一些不可能包含关键字的区间,以此来减少查找所需的比较次数。插值查找的工......
  • Java顺序查找知识点(含面试大厂题和源码)
    顺序查找(SequentialSearch),也称为线性查找,是一种简单直观的查找算法。它通过逐个检查数据集中的每个元素来查找目标值。顺序查找不要求数据集是有序的,因此它适用于任何形式的数据集,包括数组、链表、列表等。顺序查找的工作原理:开始查找:从数据集的起始位置开始。逐个比较:将......
  • java毕业设计青少年视力筛查系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着科技的发展和生活节奏的加快,青少年的视力健康问题日益凸显。长时间使用电子产品、不合理的阅读习惯以及缺乏户外活动等因素导致青少年近视......
  • Java常用新特性之Stream API
    一,认识Stream1.StreamAPIvs集合框架StreamAPI之于集合就类似于SQL之于数据表。集合:存储数据,基于内存的。StreamAPI:处理数据,基于CPU的3.使用说明①Stream自己不会存储元素。②Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream......
  • java毕业设计上门医疗服务小程序(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着社会的发展和人口老龄化的加剧,人们对医疗服务的需求日益增长,特别是对于便捷、高效的上门医疗服务。传统的医疗服务模式要求患者亲自前往医院或诊所就......
  • java毕业设计汽车租赁系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着共享经济的兴起和汽车产业的发展,汽车租赁作为一种新兴的出行方式逐渐受到人们的欢迎。传统的汽车租赁业务多依赖于线下门店操作,顾客需要到店选车、签......