- 博客(17)
- 收藏
- 关注
原创 直通BAT-大数据
哈希函数Map-Reduce案例1一用map-reduce方法统计一篇文章中每个单词出现的个数海量数据的常见处理技巧案例二请对10亿个IPV4的ip地址进行排序,每个ip只会出现一次考虑到IPV4的ip地址最多约等于42亿,而题目中也说是10亿。我们知道无符号整数的最大值是42亿+(接近43亿)因此,我们可以考虑把ip地址(32位)转...
2019-03-03 20:56:40 294
原创 直通BAT-位运算
算术运算常见操作符:+ - * / %位运算操作符:& | ^ ~ << >>位运算的面试题目大部分靠平时积累。案例一 布隆过滤器如果使用哈希表,把黑名单存入哈希表或者数据库,由于单个URL为64字节长度,100亿个黑名单长度为64B*100亿=6400亿B,约等于640G空间。思想:碰到网页黑名单问题/垃圾邮件过滤问题/爬虫的网址判断重复...
2019-03-03 17:24:33 1022
原创 topK问题
剑指offer最小的k个数法一:快速排序注意partition函数的vector要加引用,同时需要判断数组长度和k的大小。时间复杂度为O(n),但会修改数组class Solution {public: int Partition(vector<int> &input,int start,int end) { ...
2019-03-29 11:36:36 119
原创 字符串四则运算表达式求值
例如:9+(3-1)*3+10/2先把中缀表达式转为后缀表达式:9 3 1 - 3 * + 10 2 / +再计算值为20中缀表达式转后缀表达式维护一个队列存放后缀表达式,一个栈存放中间过程的操作符。最后队列中放置最后的后缀表达式,栈为空。遍历中缀表达式每一个项。(1)如果遇到数字,直接放入队列。(2)如果遇到左括号,直接入栈。如果遇到右括号,依次把栈中元素出栈,...
2019-03-29 09:44:16 376
原创 如何在数组(可以定义条件为有序)中找到出现次数最多的数字
法一如果数组长度为n,且数组中元素值都在0~n-1之间,假设数值最大为k。那么可以使用在原数组上进行操作的方法(如果可以改变数组)。即数组下标代表数值本身,当该元素出现时,就把相应下标对应的值加k,每出现一次就加k,最后比较数组元素值,最大的元素值代表其下标出现的次数最多。注意这样会改变原来的值,可以使用value%k来获得数组原来的值。注意点:(1)如何输入不定长的数组(2)...
2019-03-28 22:12:06 2135
原创 leetcode-最长回文子串/有效的括号/发糖果问题/乘法表中第k小的数/顺时针旋转二维矩阵90度
法一 暴力解决依次遍历每个字母,判断以该字母开头的所有子串是否是回文串,并更新起始字母和最大长度。 string longestPalindrome(string s) { int len=s.size(); if(len==0) return ""; if(len==1) retu...
2019-03-21 14:14:56 180
原创 哈希分治
哈希分治对于海量数据而言,由于无法一次性装进内存处理,不得不把海量的数据通过 hash 映射的方法分割成相应的小块数据,然后再针对各个小块数据通过 hash_map 进行统计或其他操作。那什么是 hash 映射呢?简单来说,就是为了便于计算机在有限的内存中处理大数据,我们通过一种映射散列的方式让数据均匀分布在对应的内存位置(如大数据通过取余的方式映射成小数据存放在内存中,或大文件映射成多个...
2019-03-21 10:04:45 623
原创 海量数据找中位数
法一原博客链接思路如下:从10亿个数据(int型占据4B)中找中位数,内存限制为1GB。不可能一次性把数据全部加载到内存中,再使用快速排序算法,因为10亿*4B大约为4GB,内存不够。可以一次性读入1GB的数据(分10次读取),然后对读入的1GB数据按照最高位即第32位的值进行分类并写入文件,如果最高位是1,写入file1,否则写入file2。那么file1全是负数,file2...
2019-03-20 22:42:05 1439
原创 leetcode-最长无重复子串/搜索插入的位置/报数
法一剑指offer的思路是动态规划。(1)用一个position数组(128),存放所有字符最后一次出现的位置。(2)用dp[i]表示以第i个字符结尾的无重复子串的最大长度:如果第i个字符之前没有出现过,那么dp[i]=dp[i-1]+1如果第i个字符之前出现过,那么就判断2个字符最近的距离d=i-position[ch]与dp[i-1]的关系1)d<=dp[i-...
2019-03-20 13:21:26 136
原创 暑期实习面试之旅
3.4 腾讯提前批后台开发实习生(C++)大概晚上八点十分左右,刚从图书馆出来,没走几步,就接到了一个座机电话,广东深圳固话,猜到了是腾讯,不过还抱有一丝希望,接了之后,对方声音很小,不过还是听到了:现在方便吗?能怎么说?只能说我这边有点吵,我找个安静的地方,其实是平复心情。。。Question 1看到你以前不是这个专业的,那可以说说你应聘这个职位的优势在哪里吗?Question ...
2019-03-04 22:03:08 456 2
原创 剑指offer43---1-n整数中1出现的次数
1-n整数中1出现的次数这个题目暴力解决貌似可以通过,但时间复杂度太大了。法一 剑指offer版比如数字21345,可以把他分为2段,1-1345 1346-21345先看1346-21345,因为最高位是2,大于1,因此,只看最高位的话,1出现的次数就是10000-19999,即10000次看低位,我们发现包括1346-9999 0000-9999 0000-134...
2019-03-04 21:02:58 338
原创 求素数
需求一般情况下,求素数,会有2种需求:1 求出1-N之间的所有素数。2 求出自然数的前N个素数。普通需求的几种解法1 遍历法即如果要判断数字N是不是素数(只被1和自己整除的数,1除外)。只需要遍历2-N-1看看数字是否被他们任意一个整除即可。#include <cstdio>bool is_prime(int n){ bool res=tru...
2019-03-03 11:40:46 138
转载 可能是求质数最高效的算法
这标题,怎么感觉好像有点震惊体的意思了。先上代码: C++版:#include <iostream>using namespace std;int prime(int n);int main() { prime(100); return 0;}int prime(in...
2019-03-03 11:20:18 338
转载 为什么构造函数不能声明为虚函数,析构函数可以
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的...
2019-03-03 09:00:51 108
转载 多态和虚表
多态多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码: //例程1 #include &lt;iostream&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using namespace std;&nbsp;&nb...
2019-03-03 08:58:29 134
原创 手动实现strcpy并考虑内存重叠
在没有内存重叠的风险时的操作如下:char *strcpy_(char *dst,const char *src){ assert(dst!=NULL&&src!=NULL); //头文件是#include <cassert> char *r=dst; while((*dst++ = *src++)!='\0'); //dst指针一直...
2019-03-01 22:29:02 743
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人