面试题
buaa_shang
这个作者很懒,什么都没留下…
展开
-
面试题之数组统计
题目:给定数组A,大小为n,数组元素为0到n-1的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。要求在O(n)的时间复杂度,O(1)的空间复杂度下完成。 解法一:直接用两层遍历,O(n^2)的时间复杂度,O(1)的空间复杂度#include #include int main(){ int n原创 2013-08-29 15:48:00 · 2036 阅读 · 1 评论 -
Google面试题之经典鸡蛋问题
还是有些晕。。。Q: 只给你二个鸡蛋,你能上100层楼,你想知道鸡蛋的硬度。鸡蛋可能很硬或很脆弱,如果鸡蛋从第m层掉下而没破裂,而从第m+1层掉下就破裂了,那么这个鸡蛋的硬度就是m。你需要找出这个m和在最坏情况下最少试验次数。(经典鸡蛋问题)A: 计算机学生可能会首先用第一个鸡蛋做二分搜索(O(logN))再用第二个递增做线性搜索(O(N)),最后必将用线性搜索结束因为用第二个鸡蛋时你无法转载 2013-09-25 10:39:43 · 3907 阅读 · 0 评论 -
面试题之中位数的应用POJ1723
http://poj.org/problem?id=1723这种难度的题也可以用来当面试题。题意:一些士兵站在矩阵的一些方格内,现要把他们移动到一横排,并连续地排成一队,问最少需要移动多少步。N解题思想:S=|x[1]-k|+|x[2]-k|+...+|x[n]-k|,当 k 为序列 x 的中位数时,S 取最小值。因此对于 y 坐标的确定较简单,找出中位数即可。x 方向转载 2013-09-25 14:14:51 · 1305 阅读 · 0 评论 -
面试题之interleave字符串分析
interleave字符串分析原题3个字符串a,b,c。判断c是否是a和b的interleave,也就是c中应该有a,b中所有字 符,并且c中字符顺序和a,b中一样。比如,a = "ef" b = "gh" c = "egfh" return true;a = "ef" b = "gh" c = "ehgf" return false。分析转载 2013-09-17 15:36:39 · 1462 阅读 · 0 评论 -
面试题之括号匹配分析
括号匹配分析原题给定字符串,输出括号是否匹配,例如,"()" yes;")(" no;"(abcd(e)" no;"(a)(b)" yes。要求必须用递归写,整个实现不可以出现一个循环语句。分析这个题目很多同学都见过了,如果没有后面的条件,会张口就说就来用栈来实现,时间复杂度O(n),空间复杂度O(转载 2013-09-16 11:24:48 · 6267 阅读 · 1 评论 -
面试题之找数字分析续
找数字续分析原题一个数组A,数字出现的情况,只有以下三种:一些数字只出现一次一些数字出现两次只有一个数字出现三次请给出方法,找到出现三次的数字。分析这个题目和“找数字”的题目比较相似,但是解法上类似么?之前的解法是检查某一位上的1的和,是否能够被3整除,因为整数是32位的,可以开辟一个 32位大小的数组,这也是常数转载 2013-09-14 12:38:04 · 1130 阅读 · 0 评论 -
面试题之又见排序分析---mark没看
又见排序分析原题给定大小为n的数组A,A中的元素有正有负。请给出方法,对其排序,保证:负数在前面,正数在后面正数之间相对位置不变负数之间相对位置不变能够做到时间复杂度为O(n),空间复杂度为O(1)么?分析这类题目,还有其他的变形,比如,数组A有奇数和偶数,排序奇数在前偶数在后,并且奇数和偶数内部的相对顺序不能变。转载 2013-09-05 11:40:32 · 989 阅读 · 0 评论 -
一道C语言测试题
#include #include int main(){ char buf[256]; int len; len = snprintf(buf, 8, "%s", "01234567890123456789"); printf("buf = %s\n", buf); printf("len = %d\n", len);}请问len输出为转载 2013-09-11 17:25:46 · 810 阅读 · 0 评论 -
面试题之缺失的数字分析
缺失的数字分析原题给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整数。比如[1,2,0] 返回 3, [3,4,-1,1] 返回 2。最好能O(1)空间和O(n)时间。分析首先数组是无序的,找到第一个大于0且不在数组中的元素,就是要找到大于0且不在数组中的最小的整数。要怎么处理呢?要找到最小的,不妨尝试从小到 大排序,然后从1开始,查找是否在数组中,转载 2013-09-11 08:51:25 · 1227 阅读 · 0 评论 -
面试题之子序列分析
子序列分析原题给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。分析如果只是像题目这样的描述,没有强调正数,可以采用O(n^2)的方法。----------解法一但是,很多同学在讨论的时候,指出了如果是正数,解法将会有什么样的变化。这个很好。不考虑正负的O(n^2)的方法,这转载 2013-09-09 17:20:23 · 811 阅读 · 0 评论 -
面试题之找数字分析
找数字分析原题数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。分析乍一看这个题目,不少同学立马给出了答案:异或。但举个例子,就会发现,异或是行不通的,一般的方法是利用异或的的如下特性:A xor A = 0A xor 0 = A但是这个题目中,数字都是奇数个的,直接采用之前类似题转载 2013-09-09 19:44:31 · 1403 阅读 · 0 评论 -
面试题之数组和分析
数组和分析原题有数组A={5,3,8,9,16},第一次遍历有:A = {3-5,8-3,9-8,16-9}={-2,5,1,7},数组中元素和为-2+5+1+7=11;第二次遍历有:A = {5-(-2),1-5,7-1}={7,-4,6},元素和为9.给定数组A,求第n次遍历之后,数组中元素的和。分析处理这样的题目,如果没有直接知道相关的原理,可以自己走一下一些具体的例子,转载 2013-09-02 23:55:27 · 684 阅读 · 0 评论 -
面试题之树的高度分析
树的高度分析原题有一个棵树,不一定是二叉树,有n个节点,编号为0到n-1。有一个数组A,数组的索引为0到n-1,数组的值A[i]表示节点i的父节点的id,根节点的父节点id为-1。给定数组A,求得树的高度。分析这个题目我们首先把数组写出来,然后进一步分析,就很明了了,如下例子:333-120转载 2013-09-01 21:22:11 · 1106 阅读 · 0 评论 -
面试题之此起彼伏
此起彼伏分析原题有这样一个数组A,大小为n,相邻元素差的绝对值都是1.如:A={4,5,6,5,6,7,8,9,10,9}。现在,给定A和目标整数t,请找到t在A中的位置。除了依次遍历,还有更好的方法么?现在我们来看看今天的题目,今天的题目,最直接的就是遍历,访问每一个元素,并且进行比较。这是任何一个、没有任何特点的数组,都可以采用的方法。也就是,相邻元素差的绝对值,我们没转载 2013-08-31 21:11:53 · 1375 阅读 · 0 评论 -
面试题之灯
灯分析原题有100盏灯,依次编号1-100,初始都是关着的。第1次遍历,打开全部的灯;第2次遍历,关掉第2盏、第4盏等被2整除的灯;第3次打开被3整除的灯;第i次,对被i整除的灯做如下操作如果灯开着,就关掉如果灯关着,就打开如此交替进行,直到100次遍历完毕,请问,还有多少盏灯亮着。分析这个题目比较好玩儿,路子走对了,很简单。转载 2013-08-30 20:09:18 · 1421 阅读 · 2 评论 -
Google面试题之战胜股市
战胜股市:现在欧美股市相当劲爆,你是不是心动了,假设给你一个数组表示这个月内每天谷歌股票的收盘价,还假设在这个月内,你只能在收盘时买或者卖一股谷歌股票,是的,就一股,你能设计一个算法寻找你最佳的买卖时间,赚取最多的钱?思路:扫描数组,保存当前的最低价格和最好的盈利。当现在的价格和最低的价格的差值好于最好盈利,更新最好盈利。简单吧,同学们不要认为面试题都是难的,一般应该是难易结合,循序渐进,面试转载 2013-09-25 23:10:32 · 1279 阅读 · 0 评论