数据结构
文章平均质量分 55
一个字节
dare try
展开
-
判断元素入栈出栈的合法性
建立一个辅助栈,把输入的第一个序列中的数字一次压入该辅助栈,并按照第二个序列的顺序从该栈中弹出数字。遍历出栈顺序中的元素,有两种情况 :(1)如果元素是栈顶的元素,则pop出来;(2)如果不是栈顶元素,则根据入栈顺序将没入栈的元素push进栈,直到将该元素push栈中,然后将该元素pop出来;如果push完所有元素都没有找到该元素,那么这个出栈顺序是错误的。最后辅助栈为空栈,则合法,负责不合法。原创 2017-07-20 17:54:21 · 465 阅读 · 0 评论 -
判断二叉树是不是完全二叉树/求两节点最近的公共祖先
-判断一棵树是否是完全二叉树。提示:层序遍历变型题。 2.求二叉树中两个节点的最近公共祖先。 要求考虑以下三种种情况,给出解决方案,并解决: 1:二叉树每个节点有parent(三叉链) 2:二叉树是搜索二叉树。 3:就是普通二叉树。(尽可能实现时间复杂度为O(N))原创 2017-07-29 15:31:37 · 546 阅读 · 0 评论 -
经典二叉树面试题
包括建立销毁二叉树,层序遍历二叉树,求二叉树的叶子节点,求二叉树第 k层的节点个数,求二叉树的高度等(递归的使用)原创 2017-07-23 14:55:26 · 357 阅读 · 0 评论 -
将一颗搜索树转换成一个排序的双向链表。要求不能创建任何新的节点
思路: 在二叉搜索树中,每个结点都有两个分别指向其左、右子树的指针,左子树结点的值总是小于父结点的值,右子树结点的值总是大于父结点的值。在双向链表中,每个结点也有两个指针,它们分别指向前一个结点和后一个结点。所以这两种数据结构的结点是一致,二叉搜索树和双向链表,只是因为两个指针的指向不同而已,通过改变其指针的指向来实现是完全可能的。为了减少指针的变换次数,并让操作更加简单,在转换成排序双向链表时,原创 2017-08-01 16:44:03 · 286 阅读 · 0 评论 -
位图的实现及相关问题
用c++实现位图 位图主要包括三个接口1.set将位图的某一位置置1a[i>>5] |= (pos>>(i&31));2.get 判断位图第i位是不是1return a[i>>5] & (pos>>(i&31));3.clear 将位图中的第 i位设置为0a[i>>5] &= ~(pos>>(i&31));原创 2017-08-09 00:24:19 · 256 阅读 · 0 评论 -
布隆过滤器
(Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素并不在集合中)和删除困难转载 2017-08-10 08:27:41 · 323 阅读 · 0 评论 -
判断二叉树平衡/求二叉树的镜像 附属: 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
判断二叉树是否平衡、求二叉树的镜像一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中时间复杂度为最坏为O(m+n)原创 2017-07-27 10:39:43 · 446 阅读 · 0 评论 -
海量数据处理
1.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?! 思路:要进行哈希切分编号,将100G 文件分成100份,将每个IP映射到相应的文件中,再用map统计每个文件中出现次数最多的IP,再讲这100份出现次数最多的IP放到hashtable中进行比较找出最大值。2.与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现?!原创 2017-08-26 21:51:20 · 284 阅读 · 0 评论 -
常见的STL容器及其使用场景
STL的容器代表着C++的数据结构STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map,multimap,( hash_set, hash_map, hash_multiset, hash_multimap)原创 2017-08-31 12:01:26 · 1752 阅读 · 0 评论