《STL源代码剖析》的双端队列的源代码剖析。...
分类:
其他好文 时间:
2014-08-14 01:35:47
阅读次数:
354
1.ArrayDeque, (数组双端队列)? 2.PriorityQueue, (优先级队列)? 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue,???????????????????????????????????...
分类:
其他好文 时间:
2014-07-29 16:19:49
阅读次数:
327
LRU:最近最久未使用,为了得到这个最新最久的信息,需要一种策略来进行记录,如果加入类似时间戳式的字段,那么每次删除的时候,就必须通过遍历才能得到时间信息,或者对时间戳进行排序,但是无论哪种,都是需要额外的维护,维护成本都比较高。
广泛使用的策略是底层用双端队列来进行维护,双端使得在插入删除时操作更简单。而单单使用双端队列似乎还是不够,比如在get 时,还是需要顺序查找给定的key参数的,所以为...
分类:
编程语言 时间:
2014-07-05 23:30:57
阅读次数:
292
标准库:一些最爱
集合、堆和双端队列
集合
集合Set类位于sets模块中。
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> set(range(10))
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
集合是由序列(或其他可迭代的对象)构建的。主要用于检查成员资格,因此,副本是被忽略的:
>>> r...
分类:
编程语言 时间:
2014-07-02 08:44:12
阅读次数:
206
LinkedList是List接口的子类,它底层数据结构是双向循环链表。LinkedList还实现了Deque接口(double-end-queue双端队列,线性collection,支持在两端插入和移除元素).所以LinkedList既可以被当作双向链表,还可以当做栈、队列或双端队列进行操作......
分类:
其他好文 时间:
2014-06-25 11:50:14
阅读次数:
251
1.顺序容器的类型顺序容器:vector 支持快速随机访问list 支持快速插入/删除deque 双端队列顺序容器适配器:stack 后进先出(LIFO)栈queue 先进先出(FIFO)队列priority_queue 有优先级管理的队列
分类:
其他好文 时间:
2014-06-21 15:31:26
阅读次数:
235
JDK源码学习系列05----LinkedList
1.LinkedList简介
LinkedList是基于双向链表实现的,它也可以被当作堆栈、队列或双端队列进行操作。
public class LinkedList
extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serial...
分类:
其他好文 时间:
2014-06-20 12:54:28
阅读次数:
205
通过阅读 OpenJDK 的 java.util.ArrayDeque ,学习底层是数组,且数组可变大小的双端队列的实现细节。...
分类:
其他好文 时间:
2014-06-20 09:38:40
阅读次数:
186
双端队列(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
求连续的k个中最大最小值,k是滑动的,每次滑动一个
用双端队列维护可能的答案值
如果要求最小值,则维护一个单调递增的序列
对一开始的前k个,新加入的如果比队尾的小,则弹出队尾的,直到新加入的比队尾大,加入队尾
从第k+1个到最后一个,按照上述规则,压入新数,然后弹出队首元素(满足队首元素对应原来序列的位置必须在视窗内,否则,继续弹出下一个)
#include
#include
#in...