
数据结构
快乐的一只程序猿
快乐的一只,一只快乐的我,热爱编程,热爱生活!
展开
-
布隆过滤器
(一)原理 布隆过滤器的原理实际上就是位图和哈希表的互补,位图省空间,哈希表省时间。这样便可以在位图中查询K(某字符串)的存在与否(二)代码实现如下BiMap.h#pragma once#include class BitMap{public: BitMap() :_size(0) {} BitMap(size_t size)//这里原创 2016-05-11 22:47:41 · 277 阅读 · 0 评论 -
BitMap位图的设计
(一)设计思路 2.给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 【腾讯】思路:如果内存够的话,40亿个整型使用位图存储需要500M左右的空间。 位图实际上就是数组,这个数组中的每个数据的每个二进制位表示一个数的存在与否,存在的话二进制位位1,否则为0.#pragma once原创 2016-05-11 16:07:39 · 631 阅读 · 0 评论 -
并查集(小米面试题求朋友圈的个数)
(一)并查集的引入以小米的这道题为例 并查集定义:并查集实际上是右一个数组实现的,这个数组比较特殊,最开始将数组的每一个数据看成一个单独的集合,用-1表示。然后根据题目要求1和2可以合并,将第2个数据合并到1上时,array[1]+=array[2],array[2]=1(数组的array[1]保存其与array[2]累加的值,这个值为负,array[2]保存他合并到的那个结点原创 2016-05-13 13:10:16 · 1877 阅读 · 0 评论 -
二分查找的递归写法和非递归写法
(一)非递归写法templateint BinarySearch_NR(T*array, size_t size,T x){ size_t left = 0; size_t right = size - 1; size_t mid = 0; while (left <= right)//如果这里给的右开区间一定要加上=号 { mid = left + (right - lef原创 2016-05-13 18:31:20 · 397 阅读 · 0 评论 -
5种常见排序方法深度剖析
# include# includeusing namespace std;size_t *InsertSort1(size_t *array, size_t size)//直接插入排序双循环写法{assert(array);for (int i = 1; i {size_t temp = array[i];int j = i - 1;for (; j >=原创 2016-04-06 20:05:14 · 691 阅读 · 0 评论