题目描述:http://poj.org/problem?id=2823思路: 求某个区间的最大与最小值,可以使用两个单调队列,由于需要在队列前删除元素和在队列后增加元素,所以考虑使用双端队列; 在双端队列中记录元素的下标,另外,双端队列为单调队列,满足单调非递增或单调非递减,则队列第一个元素为区.....
一、题目 编写支持双端队列的例程,插入与弹出操作均花费 O(1)时间二、解答 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。 基本操作:在双端队列两端插入与删除。 ADT...
分类:
其他好文 时间:
2014-10-06 01:44:29
阅读次数:
341
单链表双端链表有序链表双向链表头插O(1)O(1)头删O(1)O(1)尾插O(1)O(1)尾删O(N)O(1)插入MaxO(N)|MinO(N/2)删除O(1)查找结点O(N)次比较无移动次数删除结点O(N)次比较无移动次数O(N)–deleteKey(inti)指定结点后插入O(N)次比较无移动次...
分类:
其他好文 时间:
2014-09-30 15:06:19
阅读次数:
264
数据结构:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
操作系统:
由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
栈使用的...
分类:
其他好文 时间:
2014-09-26 20:30:58
阅读次数:
678
vector 可变数组,内存空间是连续的,容量不会进行缩减。支持高效随机存取,即支持[]和at()操作。尾部插入删除效率高,其他位置插删效率较低;
list 双向链表,内存空间可不连续,不支持随机存取。插入和删除的效率很高;
deque 双端队列,内存空间是多个连续的内存块,在一个映射结构中保存对这些块以及顺序的跟踪,可利用的内存更大,且内存大小是可以自动缩减的。支持随机存取,但是随机存取性能没有vector 好。首尾插入效率高,其他位置插删效率低;...
分类:
其他好文 时间:
2014-09-26 19:20:08
阅读次数:
245
问题:从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。
解法:这是双端 LIS 问题,用 DP 的思想可解,目标规划函数 max{ b[i]
+ c[i] }, 其中 b[i] 为从左到右, 0 ~ i 个数之间满足递增的数字个数; c[i] 为从右到左, n-1 ~ i 个数之间满足递增的数字个数。最后结果为 n - max + 1。其中 DP 的时候,可以...
分类:
其他好文 时间:
2014-09-22 17:27:47
阅读次数:
231
一个笔试题,当时竟然没想出来,现在实现下 1 /* 2 用两个栈实现双端队列 3 栈s1,s2。 4 pushback()和popback(),必须在s2为空的情况,把s2的都放s1中 5 pushfront()和popfront(),必须是在s1为空,把s1的都给放到s2中 6 */ ...
分类:
其他好文 时间:
2014-09-22 02:10:31
阅读次数:
243
Data Handler
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2455 Accepted Submission(s): 616
Problem Description
You are in...
分类:
其他好文 时间:
2014-09-12 22:09:24
阅读次数:
373
一、集合类:1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程的需要。常见的集合有:向量;链表;双端队列;栈;树;Hash表;Hash映射。 所有的这些集合类型.....
分类:
其他好文 时间:
2014-09-02 17:40:15
阅读次数:
235