一,问题描述 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的。 二,问题分析 之所以认为这个问题有趣,是因为在实现 min 方法的过程 牵涉到了 “缓存一致性”问题。是不 ...
分类:
其他好文 时间:
2016-08-18 22:58:18
阅读次数:
150
程序计数器:记录当前线程的执行位置(便于CPU切换线程的时候执行) 虚拟机栈:Java方法,方法从调用到执行完成对应一个栈帧从虚拟机栈入栈到出栈的过程。 本地方法区:Native方法(C++) 方法区:常量(final)、静态变量、类的信息 Java堆:对象的实例 ...
分类:
编程语言 时间:
2016-08-18 21:07:39
阅读次数:
137
String painter 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4283 题意: 有n个人参加选秀,每个人有一个Di值,Di值*(出场时间-1)决定他们的悲惨度,这i个人按顺序出场,但是在出场前可以通过一个栈略微调整出场顺序,输出调整后的 ...
分类:
其他好文 时间:
2016-08-11 09:47:59
阅读次数:
185
必须通过遍历查找一个节点的祖先集合,然后比较两个节点的祖先集合就可以找到最低的那个。这里采用后序遍历,并传入一个栈记录该节点的祖先节点。在每次访问一个节点时,先把这个节点压入栈,然后判断该节点是不是要查找的那个节点,如果是返回。接着查找它的左子树和右子树,..
分类:
其他好文 时间:
2016-08-09 00:47:19
阅读次数:
183
栈又称堆栈,是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。把对栈进行运算的一端称为栈顶,另一端称为栈底。向一个栈插入新元素称为入栈或进栈,Push;从一个栈删除元素称为退栈或出栈,Pop。因为后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out, ...
分类:
其他好文 时间:
2016-08-02 00:55:12
阅读次数:
304
概述 先用C#实现一个栈的类,如下: 上面要注意的是入栈时,是直接把值赋给栈顶,然后再将栈顶加1,出栈的时候,先将栈顶减一,再出栈,切记。 实例一: 用栈来实现进制转换,即十进制转化为2进制、8进制、16进制,代码如下: 测试代码: 运行结果: 实例二 用栈来检查一个字符串括号是否配对,代码如下: ...
Java是在JVM所虚拟出的内存环境中运行的。内存分为栈(stack)和堆(heap)两部分。我们将分别考察这两个区域。 栈 在Java中,JVM中的栈记录了线程的方法调用。每个线程拥有一个栈。在某个线程的运行过程中,如果有新的方法调用,那么该线程对应的栈就会增加一个存储单元,即帧(frame)。在 ...
分类:
编程语言 时间:
2016-07-30 21:06:12
阅读次数:
206
java的内存结构: 1. 堆: java所有通过new新建的对象都是在堆上进行分配的; 根据不同的垃圾回收算法, 堆的结构也不相同, 如果采用的是分代垃圾回收, 那么堆就分为年轻代和年老代两部分. 2. 栈: 每个线程执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包括局部变量区和操作数栈,用于 ...
分类:
编程语言 时间:
2016-07-16 11:30:17
阅读次数:
177
1 设计包含min 函数的栈。 定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。 2 颠倒栈。 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。 颠倒之后的栈为{5, 4, 3, 2, ...
分类:
其他好文 时间:
2016-07-15 13:10:10
阅读次数:
134
1.大致来说java虚拟机分为:堆 栈 栈在数据结构就是那个先进后出的栈。堆...这名字我一听就觉得大..毕竟我们形容东西多又没什么大多的组织的时候就是一堆一堆的....(原谅我发散性的思维,我是妹子...这样能理解我的思维么?) 栈是跟着线程走的。一个线程一个栈。一个方法一个栈帧(搞个这么专业的名 ...
分类:
编程语言 时间:
2016-07-11 21:17:42
阅读次数:
156