![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 83
silent狼
喜欢安静的思考...
展开
-
读书笔记:"算法导论"之RANDOMIZED-SELECT(快速选择算法)
算法导论一书是:Introduction to Algorithms Third Edition(已上传网盘),其第二版的中文版广为人知:算法导论缘由由于一道题需要使用这个方法处理,题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。该算法,即RANDOMIZED-SELECT算法,可原创 2014-02-20 21:40:28 · 4632 阅读 · 0 评论 -
编程之美 3.9:重建二叉树
缘由偶然翻开那本编程之美,好!今天来一题题干思路:从题干中给出的例子来分析,要点有下面三个直觉很强烈!递归。递归后的子序列前序的还是前序,中序的还是中序前序的第一个字符是整棵树的根节点,那么在中序中以根节点为界,可以获得左子树与右子树如:s前序:abdcef中序:dbacefa为根节点,那么从中序中以a节点为界可以划分为两半,前序原创 2014-04-19 22:03:18 · 716 阅读 · 0 评论 -
编程之美 2.17 :数组循环移位 (199)
题干设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。我的解答思路首先,如果k=1,也就是循环移动1位,那我们将有从后往前遍历一次即可。使用一个变量循环,另一个变量作储存最后一个数组元素。当然,上面的思路只能针对k=1的情况。第二个思路是,如果给了我k,那么其实我已经直接知道每一个数组元素最终的位置了,那么我针对每一个数原创 2014-03-28 22:31:13 · 771 阅读 · 0 评论 -
百度笔试题-1001人参加羽毛球赛,淘汰赛,当比出第一时进行了多少场比赛
问题:公司组织一次羽毛球比赛,采用淘汰机制,假设公司有1001个人,如果要评出“公司羽毛球第一高手”的称号,至少需要进行多少场比赛?请简述设计过程,并写出代码模拟比赛过程。总的来说,比较简单,每次只能淘汰一个人。或者,2个人时需要1场,3人时需要2场......。这样考虑也许。我用代码算出来了,具体算法看代码。/*百度校园招聘笔试题 *二、算法设计: * 1原创 2013-10-10 19:40:33 · 1961 阅读 · 0 评论 -
百度笔试题-从20数组内取出最大的500个
题:20个有序数组,每个数组有500个数字,取出这10000个数字中最大的500个,怎么做?我的做法(详见最后代码):1.蛮力法:将这个10000个数组,放入一个数组内,然后排序,取出前500个。2.:写一个方法,将两个数组,将两个数组整合到一个数组里面,排序,前500个就是我们需要的,再反复调用这个方法。具体来说:有一个MAX先装满0,然后它先与A[1]装在一个1000的数组内后,排原创 2013-10-08 20:51:24 · 1719 阅读 · 0 评论 -
编程之美 3.4 的扩展问题:遍历一遍单链表,使得元素顺序相反
题干编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来。解题思路我想按着顺序把一个指针的下一个元素改为它之前的元素,最后返回表尾元素,所以在一次遍历过程中需要额外三个指针指向当前元素的前一个元素指向当前元素指向当前元素的下一个元素这是因为在改变一个指针的指向时,会失去其下一个元素,所以必须要先保存指向当前元素的下一个元素。因为要改为指向前一原创 2014-03-24 09:20:52 · 1291 阅读 · 0 评论 -
strstr的实现
缘由为什么会突然说这个问题,请看下面这段话,所以今天先来看看strstr函数的实现吧。strstr的实现从百度百科找了一下代码,并不难,但是如果空手写的话还很困难的,百度百科给了三个版本,其中有两个版本是带了使用了strncmp的函数。基本思路都是一样的,首先从s1的第一个字符串开始逐一与s2的字符串比较,一旦遇见不同的就跳过s1的第一个字符。从s1的第二个字符串又原创 2014-06-09 16:59:29 · 884 阅读 · 0 评论 -
统计所有单词出现的次数:二叉数
缘由这是C程序设计语言 第二版 K&R121的一道例题,例子是为了讲述”自引用结构“的问题,但是我认为其涉及了一个更为重要的概念,二叉数。的原创 2014-03-01 13:52:16 · 1218 阅读 · 0 评论 -
总结:来自"v_JULY_v"的微软面试100题(2010年)
缘由以笔试、面试为目标学习算法。这位v_JULY_v同学非常牛逼,总结了很多很多算法的知识,这次我打算先将微软面试100题的简单题就总结一遍,我发现对我来说难度还是比较大的,所以我这次打算先总结看的懂的题。以下内容的基本上都参考于:微软面试100题2010年版全部答案集锦(含下载地址)原创 2014-02-18 15:54:59 · 2190 阅读 · 0 评论 -
求最大的组合数:用不同的数字组合,找到最大的那一个组合
缘由昨天去某公司笔试的压轴题。这玩意说穿了一点像魔术(昨天又看了一遍致命魔术)。一旦说穿了就觉得...自己很傻。所以强烈建议各位自己做一做。题干求最大的组合数(E)对输入的若干个数,输出其能组合成的最大的那个数。例如,有四个数123、124、56和90,可以组成的数是 1231245690、1241235690、5612312490、9012312456 和 90561原创 2014-06-11 10:47:11 · 6044 阅读 · 1 评论 -
数据挖掘、数据分析、海量数据处理的面试题(总结july的博客)
缘由由于有面试通知,现在复习一下十道和海量数据处理相关的题。两篇博客已经讲的非常完备了,但是我怕读懂了并非真的懂,所以必须自己复述一遍。教你如何迅速秒杀掉:99%的海量数据处理面试题海量数据处理:十道面试题与十个海量数据处理方法总结MapReduce技术的初步了解与学习面试归类下面6个方面覆盖了大多数关于海量数据处理的面试题:分而治之/hash映射 + hash统计 + 堆原创 2014-06-28 21:37:34 · 4300 阅读 · 0 评论 -
阿里巴巴 暑假实习 笔试题(2014年3月29日)
http://blog.csdn.net/dianacody/article/details/22690015http://blog.csdn.net/iloveyoujelly/article/details/22941531缘由当时去笔霸的题,现在终于流传到网上了。所谓参考答案,也不是阿里巴巴给的,有些我做的,有些是网上摘抄的,总之是我认可的。所以请大家还是原创 2014-07-02 22:35:59 · 2203 阅读 · 2 评论 -
以生活中的例子快速理解十个设计模式
观察者模式:如果朋友来你家玩,我们就是观察者,朋友就是被观察者。我们可以一直打电话问朋友,这就是观察者一直去询问被观察者,也可以被观察者到了合适的时候主动通知观察者。显然第二种更为合理。 状态模式 :http://blog.csdn.net/hguisu/article/details/7557252这个博客本来已经讲的很棒的了,结果就是因为对名字的取法有点错误,导致我差点没理原创 2014-06-19 16:05:40 · 1619 阅读 · 0 评论 -
2014年某大型互联网国企北航宣讲时的笔试(行测类型的题)
缘由上周参加的某大型国企的宣讲会和笔试,这是笔试题。无论是什么方向的都会需要考这套题,所以与it没有太大关系。有点类似于行测。 1、2月28日出生和2月29日出生的人的比例是多少?2012年2月28日和2012年2月29日出生的人的比例是多少?A. 1:1和1:1B. 4:1和1:1C. 1:1和4:1D. 4:1和4:原创 2014-06-21 16:57:35 · 2372 阅读 · 0 评论 -
算法导论(三版):第一章第二节课后题 以及 第一章思考题
第一章第二节课后题 1.2-1 Give an example of an application that requires algorithmic content at the applicationlevel, and discuss the function of the algorithms involved.答:比如说我研究生期间要完成音乐门户网站的建设,但是为了能够提原创 2015-02-26 13:36:04 · 1178 阅读 · 0 评论 -
算法导论(三版):第二章第一节课后题
第二章:算法基础 第一节:插入排序2.1-1Using Figure 2.2 as a model, illustrate the operation of INSERTION-SORT on the array A =(31, 41, 59, 26, 41,58).答: 制作文档已经上传到了云盘:CLRS_exercises_2.1-1.xlsx2.1-2Rewrite the INSERTI原创 2015-02-26 22:29:39 · 771 阅读 · 0 评论 -
算法导论(三版):第二章第二节课后题
第二章:算法基础 第二节:分析算法2.2-1 答: θ(n^3)2.2-2Consider sorting n numbers stored in array A by first finding the smallest element of A and exchanging it with the element in A[1]. Then find the second smalles原创 2015-02-27 11:59:03 · 875 阅读 · 0 评论 -
算法导论(三版):第二章第三节课后题
第二章:算法基础 第三节:设计算法2.3-1Using Figure 2.4 as a model, illustrate the operation of merge sort on the array A={3; 41; 52; 26; 38; 57; 9; 49}. excel已经存网盘:CLRS_exercises_2.3-12.3-2Rewrite the MERGE proced原创 2015-02-28 20:24:00 · 994 阅读 · 0 评论 -
编程之美3.1:字符串位移包含问题(手写代码以及改成)
题述给定两个字符串S1和S2,要求判断S2能否被S1做循环移位得到的字符串包含。例如:s1=AABCD和S2=CDAA,返回true, s1=ABCD和s2=ACBD,返回false。手写代码思路我倒是一眼就看穿了:将s1接在s1后面,形成两个s1,直接判断s2是否存在于2个s1之中即可解决s1是循环位移的问题不过这个手写的代码部分真的就是惨不忍睹了。如下图所示:原创 2014-03-20 17:16:53 · 770 阅读 · 0 评论 -
将字符串s倒置的各种方法:说什么微软面试题,其实在K&R书上早就有了
异或的方式交换两个字符,可以节省空间:int main(){ char a='a'; char b='b'; a ^= b; b ^= a; a ^= b; printf("a:%c b:%c",a,b);}打印结果:a:b b:a其他问题总结:strcpy的段错误问题下段代码要发生段错误,为什原创 2014-02-28 21:44:04 · 1252 阅读 · 0 评论 -
初步认识bloom filter(布隆过滤器)以及java实现代码
今天一个不小心看了一下bloom filter(),做了一下总结。原理其实很简答,但是很聪明。维基里面有个下例子的图,对这个问题讲的很清楚对于一个元素,判断它是否存在于集合内,我们用不同的hash算法去算他,比如有3个,假设每一个算出来都是一个数吧,以这个数为下标,我们就把位数组里面相应的数设置为1,因为位数组只能设置为0或者1。3个hash函数算完后,我们得到三个下标,看着三原创 2014-02-11 00:48:38 · 8021 阅读 · 3 评论 -
计数算法(Counting sort )
原理核心思想:如果有10个人,给其年龄排序,当我们知道某一个人比另外5个人都大时,我们就知道他应该排在第6位。直接看一次排序的完整过程,对下图中的A数据排序,注意该算法需要一个辅助数组,如下所示:(图摘自Introduction to Algorithms,8.2Counting sort,P196)我们可以看到数组A=[2,5,3,0,2,3,0,3]所带排序的数组,而数组C原创 2014-02-19 11:15:27 · 4072 阅读 · 0 评论 -
书:游戏开发中的人工智能(P314):遗传算法的初步认识以及代码实现
1.算法的来源我感觉:遗传的来源就是达尔文的物种起源,由于适者生存这一准则。粗略来说,生存的好的物种就有好的基因,生存的不好没有好的基因,直接死亡,好的基因传给下一代,下一代就能更好的生存,因为对环境不适应的逐渐死亡了。再此过程中,还有基因突变,基因突变也许会使物种更适应环境,也许不会,不会的又会死亡。这样,逐渐形成对环境非常适应的物种。逐渐形成对环境非常适应的物种意味着这个算法是原创 2013-10-17 15:04:57 · 1465 阅读 · 1 评论 -
2014阿里巴巴实习生笔试 压轴题:分析 跳跃表 “查找”的时间复杂度
缘由本来可以和上一篇博客写在一起的,但是今天整个下午我都被这个跳跃表纠缠了,缠的最后我还不能说自己完全全全的说得透,所以只好单开一篇博客了。所以我也只能说说对这个东西的感悟。我并不打算完整的叙述这个东西,这是因为算法导论的公开课实在是讲的太透彻了,是否能够领悟看个人天资了。参考来源首先写这个是为了给看这篇博客的朋友有一个良好的引导:强烈建议直接观看:算法导论的公开课原创 2014-03-30 20:00:02 · 2281 阅读 · 0 评论 -
昨夜阿里实习生笔试:印象深刻的几道题
缘由昨晚去阿里巴巴的北邮考场参加笔试:今年的实习生。有几道题让我印象深刻。暂时记录于此。沿路和一个在北邮读过硕的同学聊了聊,说北邮很有计算机氛围,而且自习室经常爆满,为了抢座还有打架的。虽然别人打架的原因不调查不能妄下结论,不过北邮学计算机的氛围真是让我好生羡慕。过桥题题干甲、乙、丙、丁四个人过桥,分别需要1分钟,2分钟,5分钟,10分钟。因为天黑,必须借助于手电筒过桥,可原创 2014-03-30 18:23:17 · 2389 阅读 · 5 评论 -
编程之美 2.18:数组分割 (涉及 动态规划)
题干有一个无序,元素个数为2N的正整数数组。要求:如何这个数组分割为元素个数为N的两个数组,并使两个子数组的和最接近。我的解法我的解法居然没有出现在书上和博客上,所以很让我怀疑我的解法有漏洞,但是又死活找不到。如下图所示,将数组排序后:最小的1和最大的20,给上面的一个子数组次小的3和次大的17,给下面的数组然后一直重复剩下两个7和8的时候,一个给上面一个给下面原创 2014-03-31 20:37:34 · 1895 阅读 · 1 评论 -
编程之美 3.2 :电话号码对应的英文单词
备份 12点28/* * 3.2电话号码对应的英文单词 * * 刚开始我还以为本题会给我一个多么惊人的答案 * 结果发现,也只是穷举之后再去和字典匹配 * * 尽管如此,本题虽然给了伪代码,但是还是比较难看懂,本着 * 纸上得来终觉浅 绝知此事要躬行的要义,还是自己写写的好。 */#include #include char c[10][10]={"", //0原创 2014-03-21 20:21:01 · 1954 阅读 · 0 评论 -
编程之美3.3 计算字符串的相似度(我的失败思路)
题干许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:修改一个字符(如把“a”替换为“b”);增加一个字符(如把“abdd”变为“aebdd”);删除一个字符(如把“travelling”变为“traveling”);比如,对于“abcdefg”和“abcdef”两个字符串来说,我原创 2014-03-22 23:15:38 · 1349 阅读 · 0 评论 -
编程之美 3.8 :求二叉树中节点最大的距离
题干如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。(P241)我的解答没看答案前我的想法就是收集所有的叶子节点,然后将计算每对叶子节点的距离,找出距离最大的。显然距离最大的两个节点必然在叶子节点,或者一个根节点、一个是叶子节点。为什么说显然,我想是从图中观察分析的出的吧原创 2014-03-25 21:12:33 · 925 阅读 · 0 评论 -
编程之美 3.10: 分层遍历二叉树
缘由看到这本书就有一直哦题干我的思路使用循环队列首先,看到问题1我首先想到了图的广度优先搜索遍历算法,后来一查书(数据结构高分笔记),才想起来树本来就有一种遍历方式叫“层次遍历(P110)"。也就问题1中想要打印树的方式。利用了数据结构“循环队列”作为辅助的工具。其实自己想的时候也想到了用队列的这个办法。不过想来这本数据结构之高分笔记是我很久之前看过的书原创 2014-04-22 13:53:30 · 802 阅读 · 0 评论 -
nginx:单独抽取nginx的红黑树源码以及运行例子
缘由最近一段时间想了想红黑树,理解了一下原理之内的,算法导论上已经讲的非常好了,我就不多废话了,所以这是我从nginx中抽取的红黑树的源码,共三分文件,能够单独运行。除了nginx中用于写的红黑树的两份代码以外,主要是就运行实例的main函数文件。红黑树的好处两附图说清楚,如果我们有序插入1、6、8、11、13、15、17、22、25、27普通二叉查找树的话,会形成下图一样的树:原创 2014-04-25 16:27:23 · 826 阅读 · 0 评论 -
设计一个排队系统
yuany这是腾讯2014校园招聘软件开发类笔试试题的附加题题干请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。我的解答这类题属于简答题,按理应该是作为一个C/S结构来完成的。不过我只写了个单机程序。下面是我对这个题思路。首先我们需要原创 2014-06-23 12:46:33 · 4599 阅读 · 1 评论 -
用代码实现全排列
缘由今天主要是研究编程之美上的24点的题,结果原创 2014-06-05 17:14:13 · 1117 阅读 · 0 评论 -
求两个整数集合的交集(Java代码,索引法)
缘由腾讯2014校招简答题,更为详细的解法请看:http://blog.csdn.net/thebestdavid/article/details/12056293题干A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。思路初步想法是用hash。也可以用布隆过滤器。比如说A集合有元素M个,B集合有元素N个。我们初始化一个max(M,N)的数组原创 2014-06-25 22:18:48 · 3517 阅读 · 1 评论 -
腾讯2014校园招聘软件开发类笔试
zon考试时长:120分钟一、 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)第一题1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:()A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA参考解答:解析:由先序遍历序列和中序遍历序列可以原创 2014-06-24 13:04:07 · 937 阅读 · 0 评论 -
通俗的讲讲求最大流的解法
缘由这是阿里实习的一道选择题。我想用比较通俗的方式讲通它,目标就是下次如果出现了类似的求最大流的题,我能够快速的做出答案。所以让我们暂时忘了比较文绉绉的词语。这篇博客以非常教科书的方式讲了解法,请参考:http://blog.csdn.net/yiqingnian28/article/details/23388633更为权威您看参考:算法导论 第三版 P414题干下图图原创 2014-06-26 14:42:14 · 1341 阅读 · 0 评论 -
java代码:计算以 字符串 形式存在的算术表达式
缘由为了解决编程之美24点游戏(1.16)引申出来的问题。直观一点来看:有这样一个表达式:String expr = "(2+1)*2"; 如何计算其值?解决方案核心是用别的东西来代表运算符:+ - * / ( ),然后我们在模拟进行人在计算中的过程。就拿上面的(2+1)*2来说,我们首先用将里面的运算符和括号转换一下,转换成一个标示,如下所示:static原创 2014-06-08 12:47:08 · 2739 阅读 · 0 评论 -
编程之美:24点游戏(1.16 P100页)
题干24点游戏是指,给你4个数,一般来说范围是1到13,然后用这个4个数算出24点。比如 11,8,3,5。可以(11-8)*(3+5)=24,那么这样就可以得到24了。当然也不是所有的数都能算出来,所以算不出来就直接返回算不出来即可。这其实是一种扑克游戏,将一副牌分给两个人后,两个人每次随机抽出两张牌放在桌子上,然后用这4张牌的值计算出24点。思路穷举我觉得我每次原创 2014-06-08 14:25:14 · 1308 阅读 · 0 评论 -
算法导论(三版):第二章思考题
第二章:算法基础2-1 Insertion sort on small arrays in merge sortAlthough merge sort runs in θ(nlgn) worst-case time and insertion sort runs in θ(n^2) worst-case time, the constant factors in insertion sort can原创 2015-03-04 22:09:46 · 2176 阅读 · 0 评论