1.一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
2.一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba。
3.STL的set用什么实现的?为什么不用hash?
4.给出两个集合A和B,其中集合A={name},集合B={age、sex、scholarship、address、...},
要求:
问题1、根据集合A中的name查询出集合B中对应的属性信息;
问题2、根据集合B中的属性信息(单个属性,如age<20等),查询出集合A中对应的name。
5.给出一个文件,里面包含两个字段{url、size},即url为网址,size为对应网址访问的次数,
要求:
问题1、利用Linux Shell命令或自己设计算法,查询出url字符串中包含“baidu”子字符串对应的size字段值;
问题2、根据问题1的查询结果,对其按照size由大到小的排列。
(说明:url数据量很大,100亿级以上)
6.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度O(1),时间复杂度为O(n)。
7.用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。
分析:
由于可以把任何类型的指针赋给void类型的指针,这个函数主要是实现各种数据类型的拷贝。
8.2010年3道百度面试题[相信,你懂其中的含金量]
a~z包括大小写与0~9组成的N个数
用最快的方式把其中重复的元素挑出来。
9.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;...,
构造一个发生器,使得它构造1、2、3、...n的概率均为1/n,要求复杂度最低。
10.有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要求按照query的频度排序.
备注: 转载于 周磊的博客,http://blog.csdn.net/v_JULY_v/article/details/6057286