【栈】 函数调用形成了一个栈帧 当调用bar时,创建了第一个帧 ,帧中包含了bar的参数和局部变量。当bar调用foo时,第二个帧就被创建,并被压到第一个帧之上,帧中包含了foo的参数和局部变量。当foo返回时,最上层的帧就被弹出栈(剩下bar函数的调用帧 )。当bar返回的时候,栈就空了 【堆】 ...
分类:
其他好文 时间:
2019-01-08 17:16:51
阅读次数:
345
关于Java的GC垃圾回收过程中,一些概念和过程的整理和理解。 1.1 堆 堆(Heap)是Java虚拟机中内存最大的一块区域,被所有线程共享,主要存放对象实例。 1.2 栈 栈(Stack)是线程私有的,生命周期与线程相同。每个方法在执行时都会创建一个栈帧用于存储局部变量表,操作数帧,方法出口信息 ...
分类:
其他好文 时间:
2019-01-05 18:12:32
阅读次数:
195
```python
# 栈 先进后出 例如蒸笼,弹夹,饭菜等
class StackFullException(Exception): """自定义一个栈溢出异常""" pass
class StackEmptyException(Exception): """自定义一个栈空出异常""" pass ... ...
分类:
编程语言 时间:
2019-01-03 21:44:47
阅读次数:
262
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:栈的特点后进先出,队列的特点是先进先出。2个栈的情况可以通过2次的压栈和出栈实现队列的先进先出。 其中一个栈来实现入队,一个栈实现出队。 图示: 注意:对于入队操作,直接对stack1进行入栈操作就好了 ...
分类:
其他好文 时间:
2019-01-01 16:08:36
阅读次数:
180
自10月来,我用了3个个多月,做了大概120题, 感觉编码水平有所提升。 前120题还未总结,先记录这几天学到的东西。 Leetcode-173: BST迭代器设计 语言:C++ 简介:说白了,就是BST的非递归中序遍历,需要一个栈做辅助结构。 测试结果: 40ms 空间复杂度:与树高成正比,最好情 ...
分类:
其他好文 时间:
2018-12-29 21:03:24
阅读次数:
327
Jvm的内存结构: 程序计数器:是JVM中一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过这个计数器的值来 选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理等(线程私有) 虚拟机栈:虚拟机栈是指方法执行的内存模型,每个方法执行的时候都会创建一个栈 ...
分类:
其他好文 时间:
2018-12-24 16:32:59
阅读次数:
127
建议不了解STL的读者先了解几个基本的队列的STL.这也是单调队列和单调栈一般都会用到的. 单调队列:建立一个队列,使队列一直具有单调性(满足单调递增或者单调递减),时间复杂度O(N). 那么我们应该如何做到"使队列一直具有单调性"呢? 以单调递增为例,我们O(N)扫描整个序列,每扫描到一个元素: ...
分类:
其他好文 时间:
2018-12-22 18:34:17
阅读次数:
450
分析:借助一个栈空间(这里我们称为辅助栈),将目标栈中的元素按从栈顶到栈底依次递减的顺序添加到辅助栈中,然后将辅助栈中的元素逐个弹出并压入目标栈即可。 思路:先申请一个辅助栈helpStack,然后弹出目标栈的栈顶元素top,此时如果helpStack为空则直接将top压入helpStack,否则将 ...
分类:
编程语言 时间:
2018-12-18 20:30:55
阅读次数:
222
分析:在数据结构与算法中,当要求时间复杂度最小时基本都是要牺牲空间复杂度。栈是先进后出,此处要求用栈实现一个获取最小值的方法且时间复杂度为O(1),首先考虑的方向就是再借助一个栈来实现,这个栈主要用来保存最小值序列(这个地方可以思考一下为什么不能用一个变量来保存最小值)。 下面直接附上代码: ...
分类:
其他好文 时间:
2018-12-17 02:42:59
阅读次数:
216
分析:栈是先进后出,队列是先进先出,所以我们要借助一个栈来反转元素的顺序。比如两个栈,pushStack和popStack,当队列添加元素时都用pushStack存放,当队列移除元素时用popStack弹出的元素,popStack栈的作用就是反转pushStack栈中元素的顺序。 步骤:当队列用ad ...
分类:
其他好文 时间:
2018-12-17 02:04:05
阅读次数:
202