码迷,mamicode.com
首页 >  
搜索关键字:两个栈    ( 569个结果
HDU 5818 Joint Stacks(左偏树)
题目链接:点击打开链接 思路: 该题的关键是怎么把两个栈合并, 我们可以使用一种叫左偏树的数据结构, 满足堆的性质和集合的性质,支持在O(logn)的复杂度下进行删除堆顶元素, 插入一个元素,合并两个堆。 细节参见代码: #include using namespace std; typedef pair P; const int maxn = 152400; P v[maxn]; in...
分类:其他好文   时间:2016-08-10 21:10:37    阅读次数:147
hdu_5818_Joint Stacks(线段树模拟)
题目链接:hdu_5818_Joint Stacks 题意: 给你两个栈,多了个合并操作,然后让你模拟 题解: 很容易想到O(1)的单个栈操作,O(n)的合并操作,这样肯定超时,所以我们要将时间复杂度均摊一下,让每个操作都是logn的,于是用上了线段树模拟。 不过官方题解给的是O(n)的解法,反正我 ...
分类:其他好文   时间:2016-08-10 12:20:07    阅读次数:237
【HDU 5818多校】Joint Stacks
用两个栈模拟,并保存每个点的时间戳。每次合并的时候记录合并时的时间戳mcnt和此时的topa和topb记做ta、tb。 每次pop的时候,如果栈的top的时间戳大于mcnt,则普通地pop,否则就在两个栈ta和tb下面找时间戳最大且还没pop掉的。然后用bj[时间戳]来标记已经pop了。 wa了好 ...
分类:其他好文   时间:2016-08-09 20:24:05    阅读次数:152
包含min函数的栈
来源:牛客网、《剑指offer》 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求push pop min 操作的复杂度为O(1)。 考虑使用两个栈,一个数据栈,等同于普通的栈,实现push pop peek 等操作;另一个辅助栈实现min函数。 这题关键在于用辅助栈储存什 ...
分类:其他好文   时间:2016-07-22 06:25:50    阅读次数:138
两栈共享空间
1 思路 如果有两个类型相同的栈,我们为它们分别开辟了数组空间。极有可能是一个栈已经满了,再入栈就溢出了,而另一个栈却还有很多存储空间。这又何必呢?我们完全可以用一个数组来存储两个栈,只不过需要一些小的技巧。 我们的做法如下,数组有两个端点,两个栈有两个栈底。让一个栈的栈底为数组的始端,即数组下标为 ...
分类:其他好文   时间:2016-07-09 11:49:19    阅读次数:122
自定义栈的实现及使用两个栈模拟队列
一,使用单链表实现栈 ①栈需要一个栈顶指针 ②栈的基本操作有出栈和入栈,以及判断栈是否为空 ③单链表中每个结点表示一个栈元素,每个结点有指向下一个结点的指针。因此,在栈内部需要实现一个单链表。代码如下: 二,使用两个栈实现队列 ①栈是先进后出,而队列是先进先出。要实现队列,就需要实现队列的基本操作, ...
分类:其他好文   时间:2016-07-02 20:13:59    阅读次数:201
《剑指offer》:[61]按之字形顺序打印二叉树
题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三层再按照从左到右打印,其他行以此类推。 例如:按之字形顺序打印二叉树的结果如下图: 方案:利用两个栈。时间复杂度O(N)+辅助空间2*O(N)。 具体方法:我们在打印某一结点时,把下一层的子结点保存到相应的栈里。如果当前打印的是奇数层(例如第一层,第三层...第2*n+1层...
分类:其他好文   时间:2016-06-30 12:51:55    阅读次数:133
算法_计算输入的算术表达式的值.
例如:如果输入:( ( 1 + 2 ) * ( 3 + ( 4 * 5 ) ) )可以计算出输入的字符串所对应的算术表达式的值.我们支持运算符+,-,*,/,和一个一元运算abs,可以用一个简单的算法获取这个算术表达式的值: 我们用两个栈(一个用于保存操作符,一个用于保存操作数).表达式由括号,运算 ...
分类:编程语言   时间:2016-06-29 08:52:44    阅读次数:189
SpiralOrderTraverse,螺旋遍历二叉树,利用两个栈
问题描述:s型遍历二叉树,或者反s型遍历二叉树 算法分析:层序遍历二叉树只需要一个队列,因为每一层都是从左往右遍历,而s型遍历二叉树就要用两个栈了,因为每次方向相反。 ...
分类:其他好文   时间:2016-06-28 21:48:47    阅读次数:106
两个栈组成的队列
设计思路: 1.设计两个栈,分别为stackPush和stackPop 2.stackPush作为压入栈,向stackPop压入数据,stackPop作为弹出栈,只弹出数据 压入和弹出需要满足下面两个条件: 1.如果stackPush要向stackPop压入数据的话,需要把stackPush中的数据 ...
分类:其他好文   时间:2016-06-27 13:53:24    阅读次数:103
569条   上一页 1 ... 33 34 35 36 37 ... 57 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!