
数据结构
文章平均质量分 78
风萧萧兮易
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。转载 2014-07-20 20:31:44 · 401 阅读 · 0 评论 -
素数
1. 根据概念判断:如果一个正整数只有两个因子, 1和p,则称p为素数.代码:bool isPrime(int n){ if(n < 2) return false; for(int i = 2; i < n; ++i) if(n%i == 0) return false; return true;}时间复杂度O(n).转载 2014-09-08 22:42:12 · 461 阅读 · 0 评论 -
各种字符串Hash函数比较
unsigned int SDBMHash(char *str){ unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (*str++) + (hash << 6) + (hash << 16) - has转载 2014-09-15 20:44:22 · 461 阅读 · 0 评论 -
虚函数与构造函数、析构函数
一、构造函数能不能是虚函数: 1.1从存储空间角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。1.2从使用角度虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函转载 2014-09-15 19:41:44 · 682 阅读 · 0 评论 -
海量数据处理:十个海量数据处理方法总结
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率转载 2014-09-09 09:53:04 · 1432 阅读 · 0 评论 -
Bloom Filter概念
二、适用范围在计算机科学中,我们常常会碰到时间换空间或者空间换时间的情况,即为了达到某一个方面的最优而牺牲另一个方面。Bloom Filter在时间空间这两个因素之外又引入了另一个因素:错误率。在使用Bloom Filter判断一个元素是否属于某个集合时,会有一定的错误率。也就是说,有可能把不属于这个集合的元素误认为属于这个集合(False Positive),但不会把属于这个集合转载 2014-09-09 10:09:37 · 402 阅读 · 0 评论 -
O(N lgK) 时间内合并K个有序链表
问题:在O(N lgK) 时间内合并K个有序链表, 这里N指的是K个链表中所有的元素个数。分析:这是一道非常经典的面试题,在很多大公司的面试题中,此题频繁出现。这题也是算法导论的作业题。这题的思路如下:1) 在每一个链表中取出第一个值,然后把它们放在一个大小为K的数组里,然后把这个数组当成heap,然后把该堆建成最小堆。此步骤的时间复杂度为O(K)2转载 2014-09-08 13:46:59 · 1340 阅读 · 0 评论 -
深入学习C语言知识点checklist
深入学习C语言知识点checklist——测试你掌握C的程度的答案 前些日子在网上转载了一篇日志《关于深入学习C语言知识点checklist——测试你掌握C的程度》,这篇文章的引用真是无所不在,但找不到关于它的答案。于是突发奇想,用了两天时间整理了篇答案。全是自己的见解,希望对大家的学习有帮助。一.字符串(1)strlen()函数的返回值是什么类型的?转载 2014-09-19 00:13:03 · 756 阅读 · 0 评论 -
动态规划——最长公共子序列
LCS(Longest Common Length)最长公共子序原创 2014-08-04 23:15:07 · 522 阅读 · 0 评论 -
寻找二叉树中两个节点的最近的公共祖先
要求寻找二叉树中两个节点的最近的公共祖先,并将其返回。class Node { Node * left; Node * right; Node * parent; }; /*查找p,q的最近公共祖先并将其返回。*/ Node * NearestCommonAncestor(Node * p,Node * q); cl转载 2014-07-20 15:22:52 · 855 阅读 · 0 评论