数据结构与算法
hit_kongquan
这个作者很懒,什么都没留下…
展开
-
算法面试:精选微软经典的算法面试100题
<br /><br />微软等数据结构+算法面试100题首次完整亮相 (注:本文转自July)<br /> ---100题V0.1版最终完成<br /> <br />================<br />作者:July 2010年12月6日<br />微软等100题系列V0.1版终于结束了。<br />从2010年10月11日当天最初发表前40题以来,直至此刻,整理这100题,已有近2个月。<br />2个月,因为要整理这100题,很多很多其它的事都被我强迫性的搁置一旁转载 2011-03-07 17:08:00 · 1919 阅读 · 0 评论 -
面试题集-树和图
<br />如何着手<br />这类问题主要有以下两种形式:<br />1、 完成创建一个树/查找一个结点/删除一个结点/其他常见的算法<br />2、 完成对一个已知算法的修改<br />不管怎样,我们强烈推荐你在面试之前搞懂与树有关的重要算法。如果你对树非常熟悉,那么就可以轻松应对一些棘手的问题了。我们给出一些非常重要的几点: 重要提示:并非所有的二叉树都是二叉查找树当被问到有关二叉树的时候,许多面试者自以为面试官是指二叉查找树,而面试官实际上是说二叉树。所以,认真听是否有“查找”那个词。如果你没有听到转载 2011-05-22 14:51:00 · 5223 阅读 · 0 评论 -
海量数据面试题整理
<br /><br />1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?<br />方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。<br />s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。<br />s 遍历文件b,采取和a相同的方式将url分别存储到1000转载 2011-03-28 00:07:00 · 894 阅读 · 0 评论 -
海量数据处理专题之双层桶划分
<br /><br />【什么是双层桶】 <br />事实上,与其说双层桶划分是一种数据结构,不如说它是一种算法设计思想。面对一堆大量的数据我们无法处理的时候,我们可以将其分成一个个小的单元,然后根据一定的策略来处理这些小单元,从而达到目的。<br />【适用范围】 <br />第k大,中位数,不重复或重复的数字<br />【基本原理及要点】 <br />因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。可以通过多次缩小,双层只是一个例子,分治才是其转载 2011-03-25 20:46:00 · 1011 阅读 · 0 评论 -
面试题:给定一个包含4300000000个32位证书的顺序文件,求出一个至少包含两次的整数
<br />面试题:给定一个包含4300000000个32位整数的顺序文件,求出一个至少包含两次的整数。<br /> <br />思路:考虑两个条件<br />1. 所有的整数都存储在顺序文件中,因此,读取文件的次数将明显影响算法的效率<br />2. 顺序文件中包含的整数个数为4300000000,如果全部读取放在内存中的话,必须要考虑内存空间因素。<br /> <br />那么,有没有既节省时间又节省空间的solution呢?也就是,尽可能只顺序读取一次文件,并且采用尽可能少的内存的方法呢?<br />原创 2011-03-19 09:07:00 · 2902 阅读 · 2 评论 -
思考题1
<br />某个升级游戏有一张卡,卡上有16个点,这其中隐藏了整数1,...16的随机排列。玩家将卡上的点擦开以查看里面的整数。如果出现整数3,那么玩家就失败了;如果1和2(不考虑顺序)都出现了,那么玩家就赢了。描述计算随机选择一个点序列而赢得游戏的概率;<br /> <br />好好思考哈~原创 2011-03-20 16:48:00 · 557 阅读 · 0 评论 -
抽样问题的解决方案
<br />问题: 输入整个整数m和n(0<m<n)<br />输出:要求按顺序输出m个随机整数,整数的值的范围是0~n-1。<br />例如:输入5和100,<br />输出: 3,8,34,55,77<br /> <br />解决方案1. 按顺序考虑整数0,1,2,...,n-1,并通过核实的随机测试选择每个元素, 通过按需访问整数,就能保证输出结果是有序的。<br /> <br />该方案的c语言实现程序:假设有一个生成随机整数的函数bigrand()<br />void getSortedRando原创 2011-03-20 16:22:00 · 1006 阅读 · 0 评论 -
海量数据处理专题(二)——Bloom Filter
<br />【什么是Bloom Filter】Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。 这里有一篇关于转载 2011-03-17 11:20:00 · 1035 阅读 · 0 评论 -
海量数据处理专题(五)——堆
<br /><br />【什么是堆】 <br />概念:堆是一种特殊的二叉树,具备以下两种性质 <br />1)每个节点的值都大于(或者都小于,称为最小堆)其子节点的值 <br />2)树是完全平衡的,并且最后一层的树叶都在最左边 <br />这样就定义了一个最大堆。如下图用一个数组来表示堆:<br /><br />那么下面介绍二叉堆:二叉堆是一种完全二叉树,其任意子树的左右节点(如果有的话)的键值一定比根节点大,上图其实就是一个二叉堆。<br />你一定发觉了,最小的一个元素就是数组第一个元素,那么二叉堆转载 2011-03-17 11:15:00 · 1261 阅读 · 0 评论 -
Bloom Filter概念和原理
<br />Bloom Filter概念和原理<br /> 转自焦萌 <br /> <br />Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素转载 2011-03-17 10:53:00 · 795 阅读 · 0 评论 -
c/c++笔试题(1)
<br />1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?<br />答案:虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.<br /> 2.将一个 1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个字符存到新文件的第一个字符,以此类推。<br /> 3.main主函数执行完毕后,是否可能会再执行一段代码?(朗讯的转载 2011-03-16 17:20:00 · 880 阅读 · 0 评论 -
c/c++笔试题
<br />微软亚洲技术中心的面试题!!!<br />1.进程和线程的差别。<br /><br />线程是指进程内的一个执行单元,也是进程内的可调度实体.<br />与进程的区别:<br />(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位<br />(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行<br />(3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. <br />(4)系统开销:在创建或撤消进程时,由于系统都要转载 2011-03-16 11:15:00 · 9977 阅读 · 0 评论 -
面试题:4张红色的牌和4张蓝色的牌
<br />题目为:有4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在A、B、C三人额头上贴任意两张牌, A、B、C三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A说不知道,B说不知道,C说不知道,然后A说知道了。请教如何推理,A是怎么知道的。如果用程序,又怎么实现呢?<br /> <br />思路提示:此题可以运用离散数学中的数理逻辑来进行解答,详细的解决思路,等会儿有时间再贴上来。<br />原创 2011-03-10 10:58:00 · 2809 阅读 · 0 评论 -
数学之美系列文章列表地址
<br />http://www.kuqin.com/math/20071204/2798.html转载 2011-03-10 15:01:00 · 549 阅读 · 0 评论 -
数学之美 从全球导航到输入法——谈谈动态规划
<br />今年九月二十三日,Google、T-Mobile 和 HTC 宣布了第一款基于开源操作系统 Android 的 3G 手机,其中一个重要的功能是利用全球卫星定位系统实现全球导航。这个功能在其它手机中早已使用,并且早在五六年前就已经有实现这一功能的车载设备出售。其中的关键技术只有两个:第一是利用卫星定位;第二根据用户输入的起终点,在地图上规划最短路线或者最快路线。后者的关键算法是计算机科学图论中的动态规划(Dynamic Programming)的算法。<br /><br /> <br /> <b转载 2011-03-10 14:58:00 · 850 阅读 · 0 评论 -
面试题:敲七
Problem<br />输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...) <br /><br />Input<br />一个整数N。(N不大于30000) <br /><br />Output<br />从小到大排列的不大于N的与7有关的数字,每行一个。 <br /><br />Sample Input<br />20<br /><br />Sample Output<br />7<br />14<br />17简单的解法:#include <stdio.h><原创 2011-03-10 10:53:00 · 1202 阅读 · 1 评论 -
R-Tree空间索引算法的研究历程和最新进展分析
最近由于申请学校的原因,教授要求写一个关于研究方向的RP。以前很少基本没接触过spatial database systems, 对于其中的很多数据结构,基本也处于小白状态,其中,R-tree就是在spatial database 及其IR领域使用非常多的一种数据结构。我从网上找到这边文章,觉得写的还不错,便转了过来。 http://blog.csdn.net/chen转载 2011-12-09 09:54:22 · 1263 阅读 · 0 评论