算法面试
eternity1118_
不积跬步无以至千里,不积小流无以成江海
展开
-
算法面试题(二)-- 最长公共子序列(LCS)与苦恼的月下老人
这是一个典型的动态规划题,属于求两个序列的最长公共子序列问题,如果你手边有《算法导论》这本书,这个问题就可以在书中找到;Code:int LCS(const char *Male,const char *Female) { int N = (int)strlen(Male); int M = (int)strlen(Female);原创 2016-06-22 14:21:45 · 1217 阅读 · 2 评论 -
字符串循环左移和右移
问题:假设给定一个字符串S,想要把其前k个字符左移放到字符串的尾部,比如S:beautiful,移动的结果字符串为:utifulbea;这种移动方式就叫做字符串的循环左移,且左移k位。问题分析:假如字符串S包含n个字符,那么明显有,循环左移k位等价于循环左移k+n位,而且循环左移和循环右移其实是一样的,如左移k位就等价于左移n-k位。一般的,遇到这一问题,大多数人会首先想到一位一位原创 2016-07-06 16:29:10 · 3442 阅读 · 2 评论 -
算法面试题(一)-- 统计学习与模式识别面试题
题目:答案解析:第一部分:1.统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,又称为统计机器学习;特点:以计算机为平台;以数据为对象;以方法为中心;以概率论、统计学、信息论以及最优化理论等为理论依托;目的是实现对数据的预测和分析;三要素:模型、策略、算法;2.3.特征选择:基于两个问题:1如何评价一组特征是否有效;2寻优算法原创 2016-06-21 12:46:58 · 4021 阅读 · 1 评论 -
BM算法
BM算法(Boyer-Moore算法)是由Robert S. Boyer和J Strother Moore于1997年发明的一种字符串匹配算法,该算法在实际实践中会比KMP算法效率高,因为BM算法即使在最坏情况下其时间复杂度也为O(N),BM算法不仅算法效率高,而且构思非常巧妙,也很容易理解,下面我们来举例说明BM算法的运行过程:匹配过程:1)首先,字符串与搜索词头原创 2016-07-29 19:09:27 · 3685 阅读 · 1 评论 -
循环不变式
如果某个命题初始为真,并且每次更改后仍然保持该命题为真,则若干次更改后该命题仍然为真;原创 2016-08-04 12:14:28 · 687 阅读 · 0 评论 -
Manacher算法--求最长回文子串
回文和回文子串回文串:顺着读和倒着读都一样的字符串;回文子串:给定字符串string,若str同时满足以下两个条件:1)str是string的子串;2)str是回文串;那么str就是string的回文子串;引出问题要求求出上面string中最长的那个回文子串;解决方案方案一:枚举中心位置,对奇数位串和偶数位串分开处理;int AllAlgorithms::longest原创 2016-08-01 11:39:15 · 982 阅读 · 0 评论 -
天平与假币问题
天平与假币假设现在有12枚硬币,已知其中有一枚是假币,但是不知道这枚假币是重还是轻;假如现在给你一架没有砝码的天平,那么你至少需要称量多少次才能找出这枚假硬币。。问题分析随机将12枚硬币等分成3组,每组4个,分别标记为A,B,C;取A和B,分别放在天平的两端(A放左边,B放右边),称重,有以下三种结果:1)如果天平平衡,表明A和B中都没有假币,2)A比B重;3)A比B轻原创 2016-08-01 16:01:06 · 1753 阅读 · 4 评论 -
高原数组
定义:若子数组A[from,...,to]满足以下条件:1)A[from] > A[from - 1];2)A[to] > A[to + 1];则称该数组为高原数组,通常用在求一个数组的局部最大;原创 2016-08-02 11:40:12 · 794 阅读 · 0 评论 -
算法面试题 -- 迷离傍地走
题目问题算法分析Code题目为庆祝强汉文武盛世暨废除和亲七百周年,武后决定拜孙武和王翳对春夏秋冬四官:细君、昭君、探春、文成四人座军事训练。 孙武和王翳分别负责四官的站军姿和踢正步科目;根据军训要求,只有在学会站军姿之后才能进行踢正步训练,但由于四官天资差别,学习时间如下表: 问题问:应该如何安排四官的学习时间,才能够使得所有人都学会上述两项技能的时间最短?算法分析首先我们来看,如果按原始原创 2016-09-23 17:02:31 · 1346 阅读 · 4 评论