什么是栈 百度百科上,栈是这么定义的: 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或 ...
分类:
编程语言 时间:
2019-08-15 12:35:34
阅读次数:
89
,二叉树是一颗线段树,树状数组,树上的每个维护节点负责维护一个区间信息,节点之间又包含和属于的关系。例如线段树: DFS序: 我们通过对每个节点设置两个量,in和out。从根节点开始DFS搜索,in为第一次搜索到时的时间戳,out为退出出栈时的时间戳。 可以得到,例如我们要查询以b为根节点我们只需要 ...
分类:
其他好文 时间:
2019-08-13 00:03:00
阅读次数:
79
题目描述 1~n依次入栈,统计不同的出栈的方式 栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两?种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定 ...
分类:
编程语言 时间:
2019-08-11 15:10:05
阅读次数:
141
区间dp专题练习 "题意" "1.Equal Sum Partitions" ? 这嘛东西,$n^2$自己写去 $$\ $$ $$\ $$ 2. "You Are the One" 感觉自己智力被吊打 $dp[i][j]$表示 , 对于当前的一个空栈 , $i$到$j$这一段都出栈的最小花费 显然是 ...
分类:
其他好文 时间:
2019-08-10 13:48:21
阅读次数:
66
是的你没有看错,又是Tarjan(说过他发明了很多算法),那么什么是Tarjan 首先看看度娘的解释: 是不是没有看懂,我也是 首先了解几个概念:强连通,强连通图,强连通分量 强连通:在一个有向图G中,两个点a,b,a可以走到b,b可以走到a,我们就说(a,b)强连通 强连通图:在一个有向图G中,任 ...
分类:
其他好文 时间:
2019-08-08 11:41:43
阅读次数:
94
执行上下文可以理解为当前代码的执行环境 JavaScript中的运行环境大概包括三种: 全局环境:JavaScript代码运行起来会首先进入该环境 函数环境:当函数被调用执行时,会进入当前函数中执行代码 eval(不建议使用,可忽略) 当代码在执行过程中,遇到以上三种情况,都会生成一个执行上下文,放 ...
分类:
其他好文 时间:
2019-08-05 13:48:56
阅读次数:
107
A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随 ...
分类:
其他好文 时间:
2019-08-04 21:11:28
阅读次数:
140
【问题】用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。 【思路】我们使用两个栈来进行交换数据,一个为插入栈,另一个为弹出栈,对于插入栈来说,只进行插入数据,而弹出栈进行弹出,如果弹出栈为空了,那么我们就将插入栈中所有数据压入到弹出栈中,这样就可以有队列“先进先出” ...
分类:
其他好文 时间:
2019-08-03 21:48:49
阅读次数:
109
新生代和老年代 对象在被实例化之后,都是属于新生代。 大部分新生代的生命周期都是及其短暂的,例如在一个方法中创建的对象会随着方法执行完毕,栈空间的栈帧出栈后而失去引用。 而有一些对象确实会长期存活在堆内存的,比如被Static引用的对象。这种对象不会轻易的被垃圾回收器回收。 所以JVM会将堆内存分为 ...
分类:
其他好文 时间:
2019-08-03 14:35:00
阅读次数:
308
题目描述 "链接" 用栈的形式给出一棵二叉树的建立的顺序,求这棵二叉树的后序遍历 分析 性质: 树的先序等于入栈次序,树的中序遍历等于出栈次序 先序:先访问根再入栈,所以入栈次序就是先序遍历次序 中序:先递归访问左子树,回溯时访问根,回溯时即出栈时,所以出栈次序就是中序遍历 所以问题转换为已知先序中 ...
分类:
其他好文 时间:
2019-08-01 18:52:54
阅读次数:
136