单调队列的操作 单调队列的操作 举例 举例 不妨用一个问题来说明单调队列的作用和操作: 不断地向缓存数组里读入元素,也不时地去掉最老的元素,不定期的询问当前缓存数组里的最小的元素。 最直接的方法:普通队列实现缓存数组。 进队出队都是O(1),一次查询需要遍历当前队列的所有元素,故O(n)。 用堆实现 ...
分类:
其他好文 时间:
2016-04-22 22:18:02
阅读次数:
159
题目一:用两个栈实现队列,队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列的尾部插入节点和在队列的头部删除节点的功能。 template <class T> class CQueue { CQueue(); ~CQueue(); void appendTa ...
分类:
其他好文 时间:
2016-04-18 20:19:10
阅读次数:
228
看秒杀系统的时候看到的关于并发队列的介绍,摘抄如下 并发队列的选择 Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBlockingQueue 。 ArrayBlockingQueue是初始容量固 ...
分类:
其他好文 时间:
2016-04-16 16:45:02
阅读次数:
194
/*******************
WZASUST2016
1:先int实例后模板化
2:复制不能改变原串的数据及结构
3:随机指针的正确性
思考:除了追加新结点后分离新旧链表;
还有一复杂度高的算法,就是记录下每一个结点,随机指针指向的结点在整个链中的排序(队列实现)建立新链表后,根据队列..
分类:
其他好文 时间:
2016-04-13 21:09:40
阅读次数:
203
两个队列实现一个栈思路:模拟栈中定义两个队列q1,q2。push:模拟栈push数据,在q1中push,调用队列q1的push方法pop:模拟栈pop数据,将q1的数据留出队尾的数据,其余的push到q2中,pop掉q1中剩下的最后一个元素。之后将q2的数据在push到q1中。(需要pop多个数据,需要写循环).打..
分类:
其他好文 时间:
2016-04-13 20:57:00
阅读次数:
112
大多数人的思路是:始终维护s1作为存储空间,以s2作为临时缓冲区。 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。 见下面示意图: 上述思路,可行性毋庸置疑。但有一个细节是可以优化一下的。即:在出 ...
分类:
其他好文 时间:
2016-04-13 20:42:32
阅读次数:
125
消息队列:操作系统提供缓冲区,提供了一种从一个进程向另一个进程发送一个数据块的方法。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的。查看系统消息队列命令:ipcs-q删除消息队列命令:ipcrm-q消息id号相关函数:原型:产生消息队列:intmsgget(key_..
分类:
系统相关 时间:
2016-04-10 19:38:19
阅读次数:
329
题目链接:http://poj.org/problem?id=3159 题意:给出m给 x 与y的关系。当中y的糖数不能比x的多c个。即y-x <= c 最后求fly[n]最多能比so[1] 多多少糖? 差分约束问题, 就是求1-n的最短路, 队列实现spfa 会超时了,改为栈实现,就可以 有负环时 ...
分类:
其他好文 时间:
2016-04-10 12:51:30
阅读次数:
137
TopK的解决方法一般有两种:堆排序和partition。前者用优先队列实现,时间复杂度为O(NlogK)(N为元素总数量),后者可以直接调用C++ STL中的nth_element函数,时间复杂度O(N)。如果想获取动态更新数据的topK就不那么容易了,比如实时更新最常访问的top10的网址,显然 ...
分类:
编程语言 时间:
2016-04-08 06:26:02
阅读次数:
262