面试
cpcs
诚实努力
展开
-
codility上的问题(34) Fluorum 2014
好久没写codility的题了,一来没时间,二来有的题目不太好分析。这个题比较有意思,我还没有给出非常严格的证明。给定一棵树(无向无环图),从一个节点出发,每次选择一个节点,从起点到目的节点的路径上没经过的节点尽可能多,直到遍历完所有的节点。如果起点到两个目的节点的路径中没经过的节点同样多,则选择标号较小的节点作为目的节点。如此继续,直到遍历所有的节点,求按顺序选择了哪些目的节点?例如从2 开始,原创 2014-07-04 11:41:54 · 2621 阅读 · 0 评论 -
codility上的问题(38) Aluminium 2014
这是目前codility的最新challenge,貌似还没结束。题目说了一大堆,简单来说就一句话,在一个shu z允许交换两个元素的位置原创 2014-07-04 17:26:28 · 4883 阅读 · 2 评论 -
codility上的问题 (36)Natrium 2014
这个题比较简单,好像也比较old,给定一个整数数组A,有N个元素,找到所有下标对(P,Q)满足 0 ≤ P ≤ Q 数据范围N [1..3*10^5]数组元素[-10^9, +10^9]要求时间复杂度O(N),空间复杂度O(N)。分析: 如果b[i] = max{a[i..N - 1]} ,则对每个i,我们找到最大的j,满足b[j]>=a[i],就可以了。这样做的目的是b,反映了后面还有没有比a原创 2014-07-04 16:23:15 · 1779 阅读 · 0 评论 -
codility上的问题(37) Magnesium 2014
这个题也比较简单,给定一个无向图,不保证是平面图,原创 2014-07-04 17:00:41 · 2679 阅读 · 0 评论 -
Codility上的问题(35) Neon 2014
也是比较有意思的题,越来越数学了……不善于做这种题。原创 2014-07-04 13:51:52 · 2468 阅读 · 1 评论 -
序列相关的趣题 之四
(8) 给定一个英文单词,原创 2014-07-11 11:12:24 · 3085 阅读 · 0 评论 -
序列相关的趣题 之三
(6) 给定1-n的一个排列,每次操作定义为把一个数放到原创 2014-07-08 19:04:40 · 2870 阅读 · 0 评论 -
内推Rocket Fuel(美国)工作
不知道从什么时候开始,很多人ke原创 2014-11-13 23:42:59 · 4263 阅读 · 0 评论 -
codility上的问题(33) Oxygenium 2014
2014年第一个问题。问题描述很简单,给定一个整整数组A,问A有多少个段(下标对)i数据范围 :数组元素个数N [1..10^6]K [0..10^9]数组元素值范围: [-10^9,+10^9]要求:时间复杂度和空间复杂度都是O(n)。分析:注意如果(i,j)满足条件,那么(i+1,j) (i+2,j)....都满足条件,所以满足条件的对子随着i的递增,j可以不减小…… 于是就是单调队列,维护i原创 2014-04-15 13:17:02 · 2172 阅读 · 0 评论 -
codility上的练习(8)
目前,最新是练习8,这次的题还是比较好玩的。(1) 一个数组中的元素原创 2013-12-22 23:44:47 · 4155 阅读 · 1 评论 -
codility上的问题(31) Carbo 2013
给定一个原创 2013-12-23 10:58:45 · 2442 阅读 · 0 评论 -
最小操作数
最小操作数题目大意: 给定一个字典和两个单词。问能否从给定的第一个单词开始,每次只改变一个字母,最终变为第二个单词。要求除第一个单词和最后一个单词外,中间的单词都在给定的字典内。给出最小的最短的变换序列。如果有多组解,给出全部的解。字典里的单词都同样长,全由小写字母组成。 分析:本题是一个广度优先搜索的典型问题。简介:图的两种搜索方法:常见的图搜索算法有两种,分别简介如下:(1原创 2013-08-12 11:09:09 · 4289 阅读 · 1 评论 -
斐波纳契数列
这个题有点projectEuler的风格,求f(34) + f(32).... 斐波那契数列可求的方法很多吧,这个范围那么小直接循环就行了。范围大的话可以用矩阵乘法,另外斐波那契数列的增长速度很快,这个似乎会超传统的int吧。。。原创 2013-05-23 10:32:54 · 1995 阅读 · 1 评论 -
字符串循环右移
题目要求,就是把字符串循环移位,这个是比较常见的面试题了,要时间复杂度O(n),空间复杂度O(1)。 这个题是比较常见的面试题了,《编程珠玑》上有,应该还有不少书上也有。 比如把字符串abcdefgh右循环移位4位,就编程了efghabcd。 我们可以考虑如下3个步骤: 先把abcd翻转变为dcba,再把efgh翻转变为hgfe。原创 2013-05-23 10:21:44 · 5162 阅读 · 9 评论 -
Google的一个面试题——数组原地置换
给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,最终把它置换成a1,b1,a2,b2,...an,bn。分析:本题是完美洗牌问题的变形。完美洗牌问题: 给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,最终把它置换成b1,a1,b2,a2,...bn,an。我们先解决完美洗牌问题。为方便起见,我们考虑的是一个下标从1开始的数组,下标范围原创 2013-08-22 18:52:43 · 6368 阅读 · 1 评论 -
走两次的方格取数问题
问题 给定m行n列的矩阵,每个元素是一个整数,从左上角走到右下角,每次只能向右或者下,走两次,使得得到的总和最大。同一次经过两个元素的话,总和只计算一次。分析: 如果是只走一次的话,是经典的dp。走两次的话,dp两次是不对的……因为状态之间有影响,第一次和最大的路径可能会影响第二次的路径。这个题还有一个变形,是等价的,就是说从起点到终点只能向右和下,再从终点回起点只能向上或者左,使得总原创 2013-08-21 11:15:52 · 2477 阅读 · 1 评论 -
打印0-1000所有质数
没啥好说的,求质数的话,有几种方法,一种是筛。另外一种是质数判定。筛的话,就是用一个bool数组,每次把倍数设置上,大概这样:for (i = 2; i <= n; ++i) { if (!mark[i]) { //是质数 for (j = i * i; j <= n; j += i) { mark[j] = true原创 2013-05-23 10:59:57 · 3394 阅读 · 3 评论 -
字符串循环左移
左旋转字符串问题题外话:话说这个问题早在40多年前就被人搞得非常通透了。《编程珠玑 (第二版)》第二章最开头问题B也讲了……好好看书很重要。这个东西是比较老的问题了,1971年就被一个做编辑器的人研究透了(《编程珠玑(第二版)》上面写的) ……现在还在作为面试题出现。给定长度为n的字符串,例如n = 6 abcdef, 左移动一位的话变为 bcdefa ,移动两位的话变为cdefab,问左移动m位原创 2013-10-29 10:52:06 · 5839 阅读 · 7 评论 -
字符串包含问题
假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出所有小字符串B里的字母在大字符串A里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPO答案是true,所有在string2里的字母string1也都有。 如果是下面两个字符串: String 1: ABCDEFGHLM原创 2013-10-29 11:06:57 · 1767 阅读 · 0 评论 -
codility上的练习(7)
codility都练习都到8了,先写7吧。这次题目比较简单,都是最大子段和相关的。(1) Max-slice-sum最大子段和 元素个数n [1..10^5],数组元素个数[-10^6,+10^6],保证最终结果32bit整数内。要求时间复杂度O(n),空间复杂度O(1)。解:// you can also use includes, for example:// #include int原创 2013-12-22 23:23:19 · 5677 阅读 · 0 评论 -
木块砌墙
木块砌墙用如下3种木块砌墙。木块如上,不能翻转,墙如下图: 问有多少种方法。n 分析: 首先,因为木块的宽度都是1,我们可以想成2维的问题。也就是说三种木板的规格分别为1* 1, 1 * 2, 2 * 1。 看到这个问题最直接的想法就是暴力搜索。对每个空格尝试放置哪种木板。但是看看数据规模就知道,这种思路是不原创 2013-08-12 16:08:04 · 4354 阅读 · 8 评论