2020.7.15 力扣每日
时间:2020-07-15
本文章向大家介绍2020.7.15 力扣每日,主要包括2020.7.15 力扣每日使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 class Solution { 2 public int numTrees(int n) { 3 int[] total = new int[n + 1]; 4 total[0] = 1; 5 total[1] = 1; 6 for (int i = 2; i <= n; ++i) { 7 for (int y = 1; y <= i; ++y) { 8 total[i] += total[y - 1] * total[i - y]; 9 } 10 } 11 return total[n]; 12 } 13 }
解题思路:本题使用动态规划的方法,题目要求求出n个节点的二叉搜索树。由于所有的节点为1~n的序列,且根据二叉搜索树的特征,当选取了1~n中某个数,y作为根节点时,左子树为1~y-1,右子树则为y+1~n,且由于右子树的排列情况与1~n-y的排列情况一致。
所以此处分别使用total[y-1],total[n-y]来表示其排列情况,也就是说当y作为根节点时,不同的二叉搜索树总个数为total[y-1]*total[n-y]。再利用y遍历n,便可求出toatl[n]的状态方程为,total[n]+=total[y-1]*total[n-y],y∈[1,n]。但此时仍未知total的具体值,显然边界情况toatl[0],total[1]的值均为1,但total[2~n]的数值未知。此时便再利用一个i遍历n,将状态方程中的n改为i,便可求出最终结果。
注意点:由于total需存储0~n的情况,所以total数组的容量为n+1,遍历时i范围为[2,n],y范围为[1,i]
空间复杂度: O(n)
时间复杂度: O(n^2)
题后总结: 优:能较快的反应出使用动态规划解决问题,且大致结构正确
差:掌握仍不熟练,对于变量的范围,数组的容量把握的不够精准
原文地址:https://www.cnblogs.com/-TTY/p/13308392.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 快速上手联邦学习——腾讯自研联邦学习平台PowerFL实战
- Linux发行版的镜像网站及开源软件收集
- 自建图床应用,我只推荐 Serverless
- 手把手教你使用 Nginx Ingress 实现金丝雀发布
- Kettle构建Hadoop ETL实践(六):数据转换与装载
- 从面试角度一文学完 Kafka
- Kettle构建Hadoop ETL实践(七):定期自动执行ETL作业
- 轻松理解JVM的分代模型
- Mybatis的几种传参方式,你了解多少?
- 搭建NFS Server
- Paxos 分布式必问的内容,没有之一
- Java进阶训练营 第一周JVM 预习笔记
- LeetCode905. 按奇偶排序数组 题解
- 试用 Azure Sql 数据库
- (九)整合spring cloud云服务架构 - commonservice-config配置服务搭建