import java.util.LinkedList; import java.util.Scanner; class TreeNode{ char val; TreeNode leftchild; TreeNode rightchild; int flag;//用于后续非递归 } public ...
分类:
其他好文 时间:
2021-05-24 15:37:05
阅读次数:
0
题链 dp[x] 表示以 x 为进化终点能取得的最大进化次数; 可以发现 dp[x] 等于 树上x的前缀最大值 +1; 但是不可能递归寻找x的父亲直到根节点,因为会超时; 所以采用重链剖分+线段树维护前缀最大值,复杂度O(nlogn*logn); #include <bits/stdc++.h> u ...
分类:
其他好文 时间:
2021-05-24 14:49:30
阅读次数:
0
之前为了求快,认为递归和动态规划是一类的,导致做了不少递归的题只能想到思路,但就是没法代码实现出来!!! 现在学习二叉树,我觉得对学习递归真的很有帮助! 二叉树的基础:遍历二叉树 二叉树遍历是基础,如果我们不能遍历二叉树,又如何对二叉树的节点进行操作呢? 二叉树的节点: /** * @author ...
分类:
其他好文 时间:
2021-05-24 14:38:57
阅读次数:
0
I. A Small Game 题解: 这一题可以反向思考,考虑如何从x得到0.因为本题的倍乘机制决定了即使我们用更小的代价到达了更大的x值,这个x值不一定会在最优路线中被用到.因此正向递推的思路因为无法确定最优路线,将导致剪枝困难.而如果如果反向递推,当前值为偶数时的最优情况比较特殊,递归调用树的 ...
分类:
其他好文 时间:
2021-05-24 13:20:51
阅读次数:
0
本章要点 文法和语言的基本知识 自上而下的分析方法:预测分析,非递归的预测分析,LL(1)文法 自下而上的分析方法:SLR(1)方法,规范LR(1)方法和LALR(1)方法 LR方法如何用于二义文法 ...
分类:
其他好文 时间:
2021-05-24 12:30:45
阅读次数:
0
第二章:递归与分治策略 计算机中问题规模越小,越好求解,自然而然想到可不可以将大问题分割为小问题,分治思想由此诞生。 分治法的设计思想是:将一个难以直接解决的大问题分割成一些规模较小的相同问题,以便各个击破,即分而治之。 如果原问题可分割成k个子问题,\(1<k≤n\),且这些子问题都可解,并可利用 ...
分类:
其他好文 时间:
2021-05-24 11:13:01
阅读次数:
0
思路如下,使用栈,每次把当前节点入栈,然后右子节点入栈,左子节点入栈。 代码如下: import java.util.*; public class Solution { ArrayList<Integer> list = new ArrayList<Integer>(); public Array ...
分类:
移动开发 时间:
2021-05-24 10:30:36
阅读次数:
0
排序方法 平均情况 最坏情况 最好情况 空间复杂度 稳定性 复杂性 直接插入排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 希尔排序 O(nlog2n) O(nlog2n) O(1) 不稳定 较复杂 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 快速排序 O ...
分类:
编程语言 时间:
2021-05-24 10:05:48
阅读次数:
0
对于包含n个数的数组而言,快速排序是一种最坏时间复杂度为O(n2)的排序算法。虽然最环情况很差,但是快速排序往往是排序时的最优选择,因为期望时间复杂度为Θ(nlogn),并且常数很小。 快速排序的描述: 快速排序使用了分治的思想,下面是快速排序的分治步骤: 分解:将数组A[l, r] 划分为A[l, ...
分类:
编程语言 时间:
2021-05-24 09:57:04
阅读次数:
0
####1.java的方法类似于其他语言的函数,用来完成特定功能的代码片段。 定义方法的语法: 修饰符:可选。告诉编译器如何调用这个方法,定义了该方法的访问类型。 返回值类型:如果方法有返回值,该方法需要定义方法的返回值的类型。如果没有返回值,类型为关键字void。 方法名:方法的实际名字。 参数类 ...
分类:
编程语言 时间:
2021-05-24 09:07:07
阅读次数:
0