题目:Binary Tree Level Order Traversal i iii和ii的差别仅在于最后将结果逆序一下就行了,算法上基本相同个人思路:1、二叉树的层次遍历,我们一层一层地处理,用一个队列(A队列)将每一层的所有节点按照从左到右的顺序入队2、待该队列的所有节点都出队,并且用另外一个队...
分类:
其他好文 时间:
2014-06-28 17:01:33
阅读次数:
235
在上一篇优化后队列的实现(C语言实现) 中,虽然我们对队列的时间复杂度进行了优化,但是却让代码的可读性变差了,代码显得略微臃肿(当然,这些话你看看就好,主要是为了奉承这篇博文的)。
这里主要实现的是:利用栈来实现队列
基本思路:
1,创建两个栈
2,两个栈合并起来组装成一个队列,分别取名为instack,outstack,用于进队列,出队列
3,比如有1,2,3,4,5 需要进入队列,先将这一串数压入instack栈中,假设压入顺序为1,2,3,4,5(1为栈底),再将instack中的数据移入outst...
分类:
编程语言 时间:
2014-06-22 14:00:43
阅读次数:
257
双端队列(Deque:double ended queue)就是一个两端都是结尾的队列。队列的每一端都可以插入数据项和移除数据项。相对于普通队列,双端队列的入队和出队操作在两端都可进行。这里我们使用最常用的顺序结构来存储双端队列,为了节省空间,把它首尾相连,构成循环队列。并且规定left指向左端的第一个元素,right指向右端的下一个位置。那么队空的判断则是left==right,队满是(left-1+MAX)%MAX==right或者(right-left+MAX)%MAX==MAX。...
分类:
其他好文 时间:
2014-06-18 00:40:38
阅读次数:
296
一个基本上纯粹的Joseph环问题,不过第一步额外多了一个m。
那么可以利用递推得出公式:
Win(n) 代表有n个人的时候胜出的号码,
那么Win(n)必然等于Win(n-1),当去掉下一个出队列的人的时候。
下一个出队列的人是谁呢? 如果模是mod的话,那么下一个出队号码计算为:
Lose(n) = mod % n;
if (Lose(n) == 0) Lose(n) = n;...
分类:
其他好文 时间:
2014-06-16 12:24:41
阅读次数:
174
题意:有n人都是仙剑5的fans,现在要在官网上激活游戏,n个人排成一个队列(其中主角Tomato最初排名为m),
对于队列中的第一个人,在激活的时候有以下五种情况:
1.激活失败:留在队列中继续等待下一次激活(概率p1)
2.失去连接:激活失败,并且出队列然后排到队列的尾部(概率p2)
3.激活成功:出队列(概率p3)
4.服务器瘫:服务器停止服...
分类:
其他好文 时间:
2014-06-11 06:50:32
阅读次数:
362
队列的存储结构有两种:一种是线性表存储,一种是链式存储。用线性表存储时,要注意队列的长度有没有超过预先设置的大小,在这个程序中,队列的可以在存满的时候,自动增加队列的长度。用链表存储,则没有长度的限制。...
分类:
其他好文 时间:
2014-06-11 06:37:33
阅读次数:
236
队列常常也使用链式存储的方式来实现。为了方便操作,同顺序存储一样,我们要维护一个头指针和一个尾指针。如下图:
在链式队列中显然不会出现假溢出的情况。但在出队时,要及时释放内存。由于在队列的实现:顺序队列中,对队列的描述已经很清楚了。就闲话不多说,直接上代码:
类定义和类实现
#include
#include
using namespace std;
typedef int ELem...
分类:
其他好文 时间:
2014-06-10 08:04:30
阅读次数:
253
本章将讲述如何利用 java
类库帮助我们实现传统的数据结构.将集合的接口与实现分离队列接口队列接口指出可以在队列的尾部添加元素 进队, 在队列头部删除元素 出队,
并且可以查找队列中元素的个数. 当需要搜集对象, 并按照"先进先出"的规则检索对象时就应该使用队列. 队列的最小形式, 类似:inte...
分类:
其他好文 时间:
2014-06-08 20:11:19
阅读次数:
224
求连续的k个中最大最小值,k是滑动的,每次滑动一个
用双端队列维护可能的答案值
如果要求最小值,则维护一个单调递增的序列
对一开始的前k个,新加入的如果比队尾的小,则弹出队尾的,直到新加入的比队尾大,加入队尾
从第k+1个到最后一个,按照上述规则,压入新数,然后弹出队首元素(满足队首元素对应原来序列的位置必须在视窗内,否则,继续弹出下一个)
#include
#include
#in...
队列也是一种常见的线性表,它和栈相比有如下不同:
队列可以在表的两端进行操作。栈只能在栈顶进行插入和删除。两端允许操作的类型不一样:可以进行删除的一端称为队头,这种操作也叫出队;可以进行插入的一端称为队尾,这种操作也叫入队。总的来说,队头只能出队,队尾只能入队。
队列的示意图:
模拟队列这种数据结构并不是什么难事,但会遇到一些问题,如:
假溢出
队...
分类:
其他好文 时间:
2014-06-08 05:33:05
阅读次数:
230