- 博客(17)
- 资源 (9)
- 收藏
- 关注
转载 寻找满足条件的两个或多个数
第一节、寻找满足条件的两个数 第14题(数组): 题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 分析: 咱们试着一步一步解决这个问题(注意阐述中数列有序无序的区别): 直接
2012-04-14 10:20:48 799
转载 类似strstr/strcpy/strpbrk函数的实现
第一节、字符串查找 1.1题目描述: 给定一个字符串A,要求在A中查找一个子串B。 如A="ABCDF",要你在A中查找子串B=“CD”。 分析:比较简单,相当于实现strstr库函数,主体代码如下: //在字符串中查找指定字符串的第一次出现,不能找到则返回-1 int strstr(char *string, char *substring) {
2012-04-13 14:42:12 2315
转载 图解google搜索技巧--“复杂的1秒”
原图为 google(graphic) 清晰版 地址 http://www.jifang360.com/files/content/2010-7/014362015.jpg
2012-04-13 12:14:09 657
转载 三段式搜索引擎工作流程总结
搜索引擎要处理的问题就是,在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表,这个列表包括三部分:标题,URL,描述或摘要。 现代的大规模搜索引擎一般采用三段式的工作流程,即:网页搜集、预处理、查询服务。 对这三点简单的阐述下: 一、网页搜集 搜索引擎是通过爬虫去搜集互联网中的网页,放入数据库,但是这不可能是用户提交查询的时候才去抓取,而是预先就搜集好一批网页,可
2012-04-13 11:55:43 1353
转载 左旋转字符串
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。 请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。 编程之美上有这样一个类似的问题,咱们先来看一下: 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N), 且只允许使用两个附加变量。
2012-04-11 11:13:44 786 1
转载 海量数据处理面试题
1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000
2012-04-11 10:22:52 732
原创 最长子序列求和
一、子序列可以不相邻 只需将所有大于0的元素挑出即可。 二、子序列是相邻子序列 动态规划 a[j] = 0; if(j == 0) a[j] = a[j]; if(a[j-1] a[j] = a[j-1] + a[j]; if(a[j-1] > 0) 遍历找出最大a[j]即可
2012-04-10 21:33:43 601
转载 概率相关的题目
1、一个随机数产生器以概率p生成0,以概率(1-p)生成1,怎样生成等概率的0和1? 如果用这个随机数产生器产生两个位,出现00的概率为p^2,出现01的概率为p(1-p),出现10的概率为(1-p)p,出现11的概率为(1-p)^2。看到没有,出现01和10的概率相等。那么我们就可以用这个随机数生成器每次产生2位,直到产生的是01或者10,当为01时,输出0,当为10时输出1。 问题扩展:还
2012-04-10 20:28:31 876 1
原创 蓄水池抽样的原理
问题起源于编程珠玑Column 12中的题目10,其描述如下: How could you select one of n objects at random, where you see the objects sequentially but you do not know the value of n beforehand? For concreteness, how would yo
2012-04-10 20:26:23 2770
转载 关于计算机如何做加法
题目:实现int add(int a, int b)方法,实现a和b的和,但是内部不允许使用+-*/等算术运算。 解答:这个题考查的其实是对计算机硬件如何做加法的。计算机内做加法和乘法都是模拟人做加法和乘法的方法来设计和实现cpu算术运算模块的。这在我们学习计算机组成原理的课程时应该学到过。如下面例子: 1101 11 + -------------- 10000 这个计算可
2012-04-10 19:36:35 5625
转载 Bloom Filter
一、什么是Bloom Filter Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场
2012-04-10 18:43:15 516
转载 海量数据处理
海量数据处理心得: 1、使用哈希函数和分治的方法将数据分割到不同文件中,如果文件过大可以继续细分。 2、对每个文件进行外部排序或者哈希统计的方法对记录进行排序。 3、通过直接排序、部分排序或者最大/小堆的方法进行统计。 4、归并被分割的文件,生成目标数据。 方法: Bitmap(位图法)、N-Bitmap、Bloom filter、快速排序、堆排序、哈希函数、归并排序、二分查找。
2012-04-10 18:07:56 433
转载 寻找第K大的数的方法总结
今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们
2012-04-10 17:17:34 653
转载 Top K 算法
问题描述 百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。 必备知识:
2012-04-10 12:35:32 825
原创 外部排序
一、多路归并排序 1、将每一块内存能够容纳的数组进行内部排序,并存入外存中。 2、使用败者树或者最小堆,对M路已经有序的数组进行归并。 3、将归并后的结果存入外存。 二、置换-选择排序 1、从外存FI读入w个记录到内存WA中。 2、从内存WA中选择最小的记录为MINIMAX。 3、写入外存FO。 4、如果外存FI中记录不为空,写入WA中一个记录。 5、从WA中所有比MINI
2012-04-10 12:15:15 547
转载 hash_map原理
hash_map原理 hash_map基于hash table(哈希表)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。 其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,
2012-04-10 11:19:24 429
Mysql最新JDBC驱动
2016-08-04
Java Drawing With Apache Batik A Tutorial
2012-08-20
PHP程序设计
2012-05-16
ADW_Launcher源码和配置过程
2011-09-03
研磨设计模式(陈臣 王斌 清华大学出版社)
2011-07-30
PHP官方手册中文版
2011-07-01
UCOS-II中文版
2009-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人