
数据结构
Hyacinth_Dy
这个作者很懒,什么都没留下…
展开
-
实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字
利用构造函数和静态数据成员class Temp{public: Temp() { ++n; sum += n; } static void reset() { n = 0; sum = 0; } static int getsum() { return原创 2017-07-15 12:40:05 · 428 阅读 · 0 评论 -
寻找无序数组的中位数
题目:求一个无序数组的中位数。 如:{2,5,4,9,3,6,8,7,1}的中位数为5,{2,5,4,9,3,6,8,7,1,0}的中位数为4和5。 要求:不能使用排序,时间复杂度尽可能高提示:考虑堆或者快排思想解决。原创 2017-08-06 22:13:40 · 1879 阅读 · 0 评论 -
CVTE水果问题
题目:本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出大家最喜欢吃的前k种水果。 要求:打印出最喜欢的水果,并且效率尽可能的高。 提示:尽量使用STL的容器和算法,这样能原创 2017-08-06 21:30:51 · 416 阅读 · 0 评论 -
剑指offer-树中两个节点的最低公共祖先
对于这个问题不同的条件可以有不同的解法树是二叉树且是二叉搜索树。原创 2017-07-28 21:29:18 · 348 阅读 · 0 评论 -
判断一棵树是不是完全二叉树
完全二叉树:前n-1层结点都是满的,第n层不满的话,只能是缺右孩子,左边是满的。原创 2017-07-28 20:53:01 · 760 阅读 · 0 评论 -
判断一颗二叉树是否是另一颗树的子树
输入两棵二叉树A和B判断B是不是A的子树原创 2017-07-27 19:26:02 · 804 阅读 · 0 评论 -
平衡二叉树旋转详解
平衡二叉树的定义(AVL)定义 平衡二叉树或者是一棵空树,或者满足以下的性质:它的左子树和右子树的高度之差的绝对值不超过1,并且左子树和右子树也是一个平衡二叉树。平衡因子 左子树高度减去右子树的高度的值或者右子树高度减去左子树高度的值。显然 -1 <=bf <= 1AVL树的引入 平衡二叉树在二叉排序树上引入的,在二叉树中,如果插入的节点接近有序,那么二叉树就会退化为链表大大降低了查找效率原创 2017-04-29 16:28:56 · 16215 阅读 · 3 评论 -
图-迪杰斯特拉(dijkstra)算法
迪杰斯特拉算法:是一种典型的最短路径算法,用于计算一个结点到其他结点的最短路径,主要特点是以起始点为中心向外层层扩展(广度优先思想),直到扩展到终点。 算法思想:找到离源点最近的一个点,找到以该点为中心,找到源点到其他节点的最短路径。 举例详细分析 采用邻接矩阵存储图,顶点之间不可达记为无穷大,上图对角线也是无穷大。 计算顶点1的最短路径 1.首先定义一个dis数组,将1到其他顶点的的原创 2017-08-08 23:53:13 · 625 阅读 · 0 评论 -
布隆过滤器
布隆过滤器 他实际上是一个很长的二进制向量和一系列随机映射函数,用于检索一个元素是否在一个集合中,当一个元素被加入到集合中,通过K个hash函数将元素映射到位队列的K个点中,即将对应的比特位置为1,检索时我们只需要知道这些点是不是1就能大约知道这个元素是不是再集合中。如果这些点中任何一个为0,就一定不存在。如果这些点每个都为1,那么元素可能存在在集合中。原创 2017-08-07 22:15:48 · 528 阅读 · 2 评论 -
位图
位图实现:在位图中采用比特位表示对应的元素存在或者不存在0:不存在 1:存在,例如一个int整数有32个比特位可以表示0-31个整数。实现代码class BitMap{public: BitMap(int size = 100)//size表示你需要表示元素的个数 { _map.resize((size >> 5) + 1);//一个int可以表示32个元素,原创 2017-08-07 21:49:41 · 1636 阅读 · 0 评论 -
shell脚本实现希尔(shell)排序
采用shell脚本实现希尔排序原创 2017-07-31 19:28:22 · 809 阅读 · 0 评论 -
希尔/shell排序
题目:采用希尔排序对一组无序元素由小到大排序 实现代码void ShellSort(int *arr, int size)//希尔排序{ if (NULL == arr || size <= 0) return; int gap = size; while (gap > 1) { gap = gap / 3 + 1;原创 2017-07-31 19:22:49 · 433 阅读 · 0 评论 -
面试题:插入排序
采用插入排序对一组无序元素进行排序原创 2017-07-31 19:20:44 · 490 阅读 · 0 评论 -
元素出栈、入栈顺序的合法性
题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。原创 2017-07-22 09:08:13 · 477 阅读 · 0 评论 -
二叉树的层序遍历
题目:实现一颗二叉树的层序遍历,树的结点定义如下原创 2017-07-22 08:59:26 · 493 阅读 · 0 评论 -
面试题-前序中序序列重建二叉树
题目:根据某二叉树的前序中序序列重建二叉树,假设前序中序序列中不包含重复的数字。树的结点定义如下。原创 2017-07-30 23:06:02 · 400 阅读 · 0 评论 -
剑指offer面试题-二叉搜索树转换成一个排序的双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的结点,只能调整树中节点的指向,树的结点定义如下:原创 2017-07-30 15:47:52 · 664 阅读 · 0 评论 -
不用加减乘除做加法
题目: 写一个函数,求两个整数之和,要求函数体内不得使用+ - * / 四则运算符号。(也不能使用++)。原创 2017-07-16 20:01:43 · 357 阅读 · 0 评论 -
哈希(HASH)冲突的处理方法
通过构造良好的哈希函数可以减少冲突,但一般不能完全避免冲突。因此解决冲突是哈希法的另一个关键问题。原创 2017-08-30 19:24:25 · 1699 阅读 · 0 评论