海量数据处理(面试题)

1.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?! 解题思路:哈希分桶法。 1,将100G文件分到1000个文件中,然后将每个IP地址映射到对应文件(IP地址转换为整数,对文件个数进行取余,然后根据结果放入对应文件,...

2017-08-21 21:16:58

阅读数:195

评论数:0

每日一题——判断二叉树是否平衡,求一棵二叉树的镜像

1,判断一棵二叉树是否平衡 一棵树平衡是指它根节点到叶子节点的最长路径与最短路径只差不超过1。bool IsBanlance(Node* root,int& depth) { if(root == NULL) { depth = 0; re...

2017-08-10 22:04:46

阅读数:163

评论数:0

每日一题——求二叉树的高度,销毁二叉树

1,求二叉树的最大高度:int length(Node* root) { if(root == NULL) return 0; int leftLength = length(root->left); int rightLength = length(r...

2017-08-10 09:52:34

阅读数:178

评论数:0

每日一题——求二叉树叶子节点个数,第K层节点个数

1,求叶子节点个数int leafnum(Node* root) { if(root == NULL) return 0; if(root->left == NULL && root->right ==NULL) retu...

2017-08-09 23:49:36

阅读数:194

评论数:0

每日一题——atoi,itoa函数的实现

atoi是将字符串转换为长整形数的一种函数,itoa相反 atoi实现需注意一下点: 1,空格; 2,表示数值的正负号; 3,结束条件:非数字或‘\0’; 4,考虑溢出问题; 5,考虑异常输入问题(+abc …),用全局变量valid标识; #define INT_MAX ((in...

2017-08-09 19:34:40

阅读数:148

评论数:0

每日一题——memcpy,strcpy,memmove的实现

memcpy与strcpy的区别: 1,用途不同:strcpy主要用来字符串拷贝,memcpy主要是其他类型的拷贝; 2,使用方式不同:strcpy是遇到‘\0’停止,memcpy是根据第三个参数来决定拷贝内容;memmove: 原型:void memmove( void dest, con...

2017-08-09 16:48:40

阅读数:143

评论数:0

每日一题——布隆过滤器

布隆过滤器:它实际上是一个很长的二进制向量和一系列随机映射函数。用于检索一个元素是否在一个集合中。它的优点是空间效率和时间效率都远远超过一般算法。缺点是有一定的误识率,和删除困难。 原理:当一个元素加入集合时,通过K个Hash函数将该元素映射成一个位阵列中的K个点,把他们置为1,检索时,只要看看...

2017-08-09 15:00:19

阅读数:166

评论数:0

每日一题——位图

定义:位图(bitmap)就是利用每一位来存储某种状态,但是状态又比较少的情况。 缺点: 1,只能用于整形; 2,可读性差; 3,位图存储的元素个数虽然比一般做法多,但是存储的元素大小受限于存储空间的大小。位图存储性质:存储的元素个数等于元素的最大值。比如, 1K 字节内存,能存储 8K ...

2017-08-09 13:33:51

阅读数:120

评论数:0

每日一题——字符串循环右移K位,时间复杂度O(N)

例:abcdefgh,循环右移K=3位,就成:fghabcde思路:从上面的例子可以看出,结果就是将后面的K位与前面的N-K位调换位置即可。将字符串逆置,就使得前后位置发生了变化,但是前后两部分的字符顺序出现了逆置,所以在逆置整个字符串时,首先将两小部分分别逆置,最后在整体逆置。 1, abcd...

2017-08-09 10:26:03

阅读数:141

评论数:0

每日一题——排序(从1-n连续的数进行排序)

有一堆从1到n连续的n个数,要求进行排序,时间复杂度是O(N)思路:从第一个数开始,使得a[i]与a[a[i] - 1]进行交换,直至 i == a[i]-1,即该值已回到了自己的所在位置(0对应1,1对应2,…),然后i++;直至结束。void sort(int a[],int len) { ...

2017-08-09 09:49:34

阅读数:145

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭