发布于 2015-03-30 08:56:12 | 191 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

谷歌(Google)搜索引擎

Google公司(中文译名:谷歌),是一家美国的跨国科技企业,致力于互联网搜索、云计算、广告技术等领域,开发并提供大量基于互联网的产品与服务,其主要利润来自于AdWords等广告服务。


如何随机选取1000个关键字

   给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?定义长度为1000的数组。对于数据流中的前1000个关键字,显然都要放到数组中。

   对于数据流中的的第n(n>1000)个关键字,我们知道这个关键字被随机选中的概率为 1000/n。所以我们以 1000/n 的概率用这个关键字去替换数组中的随机一个。这样就可以保证所有关键字都以 1000/n的概率被选中。对于后面的关键字都进行这样的处理,这样我们就可以保证数组中总是保存着1000个随机关键字。

将下列表达式按照复杂度排序

   2^n

   n^Googol (其中 Googol = 10^100)

   n!

   n^n

按照复杂度从低到高为

   n^Googol

   2^n

   n!

   n^n

   数组中是否有两个数的和为10

1.比较任意两个数的和是否为10。如

   for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { .... }}

   复杂度为O(n*n)。

2.将数组排序后,对每个数m,使用二分查找在数组中寻找10-m。

   复杂度为O(nlogn)。

3.将数组存储到hash_set中去,对每个数m,在hash_set中寻找10-m。

   复杂度为O(n)。

4.如果数组很大,超过内存的容量,可以按照hash(max(m, 10-m))%g,将数据分到g个小的group中。然后对每个小的group进行单独处理。

   复杂度为O(n)。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务