heap不属于STL容器,它扮演者priority queue的助手。heap是一种完全二叉树,可由数组来实现,但heap需要动态改变大小,所以最终选择了vector作为底层容器。STL默认提供最大堆。
题外话:分析heap的源码就能清楚的理解堆这种数据结构的例程,而STL库代码的质量又很高,所以看堆的代码,STL源码是一个很好的选择。
为了满足完全二叉树的性质,新插入的元素一...
分类:
其他好文 时间:
2014-07-22 23:04:53
阅读次数:
363
1 //桶排序思想 2 //假如要排序的是数字是 2 4 5 5 5 8 8 9 1 1 3
#include 4 #define length 10 5 int main() 6 { 7 //数组元素值全部初始化为0 8 int
array[length]={0}; 9 ...
分类:
其他好文 时间:
2014-05-01 22:19:46
阅读次数:
342
创建数组如果你习惯了用 new
来实例化对象的形式,那么在js中一定会疑惑,可选的参数数量代表的意义截然不同。new
Array(size);//传一个参数的时候分两种情况,size是正整数时代表数组的长度;size是其它非数字类型代表的是初始化有一个元素的数组;非正整数的尝试豪无意义new
Arr...
分类:
编程语言 时间:
2014-05-01 20:43:40
阅读次数:
427
题目题意:给m个数字, q次询问, 询问b到e之间如果有重复数字就输出,
没有就输出OK思路:用f[i]数组 记录从i开始向后最近的有重复数字的 位置, 如 1 3 2 2, 则f[1] = 4;如果离a最近的重复数字的位置
都大于b, 就说明没有重复数字。f[]数组需要预处理,从后向前。 1 #i...
分类:
其他好文 时间:
2014-05-01 19:28:39
阅读次数:
286
json是一种轻量级数据交换格式,简单的json格式为[{"key1":"value1"},{"key2":"value2"}],
[]代表数组,{}代表数组中的数据对象,key1,key2是一个json对象中的key,一个json中key值唯一,value1,value2,是key键对应的值。
下面使用jquery解析简单的son文件。
这里是songs.json文件内容
[
{"opt...
分类:
Web程序 时间:
2014-05-01 18:17:27
阅读次数:
447
一、 序言
上一篇文章中,给出了 trie 树的一个实现。可以看到,trie 树有一个巨大的弊病,内存占用过大。
本文给出另一种数据结构来解决上述问题---- Ternary Search Tree (三叉树)
二、数据结构定义
Trie 树中每个节点包含了 26 个指针,但有很大一部分的指针是 NULL 指针,因此浪费了大量的资源。
一种改进措施就是,以一棵树来代替上述的指针数组。...
分类:
其他好文 时间:
2014-05-01 17:49:30
阅读次数:
326
题目:
Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height.
翻译:
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
思路:
要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。...
分类:
其他好文 时间:
2014-05-01 17:48:45
阅读次数:
321
题目来源:POJ 3882 Stammering Aliens
题意:给你m一个一个字符串 求至少出现m次的最长字符串 可以在字符串中重叠出现
思路:二分长度l 然后从height数组中找长度大于等于l的前缀
#include
#include
#include
using namespace std;
const int maxn = 40010;
char s[maxn];
in...
分类:
其他好文 时间:
2014-05-01 17:36:34
阅读次数:
334
题意:
给定n长的数组(下标从1-n)(n个人的身高,身高各不相同
问:对于第i个人,他能看到的左边最矮的人下标。(如果这个最矮的人被挡住了,则这个值为0)
还有右边最高的人下标,同理若被挡住了则这个值为0
输出n行,每个人左右2边的下标。
单调队列,对于 front - rear 的队列(注意出队都是在rear,入队也是在rear)
当加入元素x,若这队列是单调递增的,显然q.fro...
分类:
其他好文 时间:
2014-05-01 17:21:43
阅读次数:
429
1:temp = array[i]*i: 2410.0 ms
2:temp = GET(array,i) *i: 2410.0 ms
3:temp = get(array,i)*i: 2950.0 ms
4:int a = get(array,i);temp = a*i: 3340.0 ms
5: int a = array[i];temp = a*i;: 1990.0...
分类:
其他好文 时间:
2014-04-30 22:25:38
阅读次数:
303