大多数人的思路是:始终维护s1作为存储空间,以s2作为临时缓冲区。 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。 见下面示意图: 上述思路,可行性毋庸置疑。但有一个细节是可以优化一下的。即:在出 ...
分类:
其他好文 时间:
2016-04-13 20:42:32
阅读次数:
125
队列是一种线性表,按照先进先出的原则进行的: 队列是一种线性表,按照先进先出的原则进行的: 看看各语言实现队列的方法:PHP实现队列:第一个元素作为队头,最后一个元素作为队尾 什么是双端队列(或双向队列)Deque,全名double-ended queue?即元素可以在队列的任意一段入队或出队,如果 ...
分类:
Web程序 时间:
2016-04-13 15:57:25
阅读次数:
171
重现补的题目。
Problem A: Krito的讨伐
思路:不要求一次性杀光一个节点里面的所有怪物。 所以我们可以用一个优先队列。优先去杀那些我们当前可以挑战的,然后注意下处理一个房间可能有多个怪物或者无怪物。当我们杀完第x个房间的怪物时候,那么就把x的下一层的怪物加入队列,如果x的下一层出现了空房间[即房间不存在怪物],那么再把该房间当做新的x,继续加入新x的下一层直到出现了有怪...
分类:
其他好文 时间:
2016-04-13 13:17:46
阅读次数:
220
题目链接:http://codeforces.com/contest/655/problem/D 大意是给若干对偏序,问最少需要前多少对关系,可以确定所有的大小关系。 解法是二分答案,利用拓扑排序看是否所有关系被唯一确定。即任意一次只能有1个元素入度为0入队。 1 #include <iostrea ...
分类:
移动开发 时间:
2016-04-13 07:04:43
阅读次数:
243
queue 队列 参考 1.入队:如q.push(x):将x元素接到队列的末端; 2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;T 3,访问队首元素:如q.front() 4,访问队尾元素,如q.back(); deque 双端队列 参考 at() 返回指定的元素 back( ...
分类:
编程语言 时间:
2016-04-12 18:58:37
阅读次数:
238
使用两个栈实现一个队列思路一:我们设定s1是入栈的,s2是出栈的。入队列,直接压到s1即可出队列,先把s1中的元素倒入到s2中,弹出s2中的栈顶元素;再把s2的剩余元素全部倒回s1中。
分类:
编程语言 时间:
2016-04-12 16:07:20
阅读次数:
269
题目描述:二叉树,按层打印,并且每层换行分析:我们知道,二叉树的层序遍历需要借助队列来实现,每取出一个节点打印,并将该节点的左右孩子放入队列中,依此反复,直到队列为空时,也就完成了二叉树的按层打樱基本过程如图所示:但是,关键是怎么换行?分析:要换行则需要知..
分类:
其他好文 时间:
2016-04-10 19:45:10
阅读次数:
419
在并发编程中我们有时候需要使用线程安全的队列。要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。 使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,其中阻塞队列的典型是:BlockingQueue; 非阻塞的实现方式 ...
分类:
其他好文 时间:
2016-04-10 10:16:03
阅读次数:
167
这题是使用队列去实现栈,属于比较基础的题目。需要考虑的点在于队列为先进先出,即入队在队尾,但是出队在队首,而栈为先进后出,即出栈和入栈都在栈尾。需要实现的功能如下: push(x) -- Push element x onto stack. pop() -- Removes the element ...
分类:
其他好文 时间:
2016-04-10 01:09:43
阅读次数:
174