摘要:
给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)这个题有多种方法,想想看~~~---------------------------------------------------------------------------------------------------答案:方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同。时间复杂度为O(n+logn),空间复杂度为O(1)。方法2.使用bitmap方法。定义长度为N/8的char数组,每个bit表示对应数字是否出现过。遍历数组,使用 bitmap对数字是否出现进行统 阅读全文
摘要:
有十二个外形完全一样的球,但是其中有一个的重量和其他十一个不一样,而且不知道是轻还是重。现在问,给你一个天平,只能称三次,你能不能找出那个重量不一样的球,如果能的话,能不能确定那个球是重了还是轻了。-----------------------------------------------------------------------------------------------答案:将 12 个球编号:A1,A2,A3,A4 B1,B2,B3,B4 C1,C2,C3,C4第一步:比较 A1+A2+A3+A4 和 B1+B2+B3+B4。(1) 如果 A1+A2+A3+A4 = B1+B 阅读全文
摘要:
试题1:分别给出BOOL,int,float,指针变量与“零值”比较的if语句(假设变量名为var)试题2:以下为Windows NT下的32位C++程序,请计算sizeof的值void Func ( char str[100] ){ sizeof( str ) = ?}void *p = malloc( 100 );sizeof ( p ) = ?试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?least = MIN(*p++, b);-------------------------------------------------- 阅读全文
摘要:
1)村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一旦能证明自己的男人偷情,就必须当天把他杀死。村里的女人全都严格照此规矩办事。一天,女头领出来宣布,村里至少有一个丈夫偷情。请问接下来会发生什么事?2)有四个人要在夜里穿过一条悬索桥回到宿营地。可是他们只有一支手电,电池只够再亮17分钟。过桥必须要有手电,否则太危险。桥最多只能承受两个人同时通过的重量。这四个人的过桥速度都不一样:一个需要1分钟,一个需要2分钟,一个需要5分钟,还有一个需要10分钟。他们 阅读全文
摘要:
第一道:据说是google面试题有N个整数,求其中任意N-1个数的乘积中的最大值。例如-4,-1,2的最大值就是4;最好给出复杂度分析。这道题我没有找到标准答案,大家可以把自己的想法贴出来讨论一下。第二道:编程练习题 POJ1163 The Triangle 73 88 1 0 2 7 4 4 4 5 2 6 5The above figure shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top a 阅读全文
摘要:
教授选出两个从2到9的数(可以相同),把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数 甲说:“我猜不出” 乙说:“我猜不出” 甲说:“我猜到了” 乙说:“我也猜到了” 问这两个数是多少-----------------------------------------------------------------------------------------参考答案: 设两个数为n1,n2,n1 =n2,甲听到的数为n=n1+n2,乙听到的数为m=n1*n2 证明n1=3,n2=4是唯一解 证明:要证以上命题为真,不妨先证n=7 1)必要性: i) n 阅读全文
摘要:
设计一个算法把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。------------------------------------------------------------------------------------------------------答案:每个元素右移N位后都会回到自己的位置上。因此,如果KN,右移K-N之后的数组序列跟右移K位的结果是一样的,所以右移K位即,右移K‘=K%N位。代码如下RightShift(int* arr,int N,int K){K%=N;while(K--){int t=arr[N-1];for( 阅读全文
摘要:
初始时数123显示在计算机屏幕上。每一分钟计算机都给屏幕上的数加上102,计算机专家Bill可任意改变计算机屏幕上所显示数的各位数字的前后顺序,试问Bill能否永远不让屏幕上出现有4位数字的数?-------------------------------------------------------------------------------------------------答案:解法1:Bill能够防止屏幕上出现4位数,他的操作方法如下:先将123改成312,然后静观计算机屏幕上依次出现414、516、618、720。此时他将720改成027。再静观计算机屏幕上出现129、231。 阅读全文
摘要:
有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水20小时后就会死亡,现在用十只小白鼠来验毒,要求在24小时内找到混有毒药的那瓶水,怎么做?--------------------------------------------------------------------------------------------------------------------------------------------答案:给1000个瓶分别标上如下标签(10位长度):0000000001 (第1瓶)0000000010 (第2瓶)0000000011 (第3瓶)......1111101 阅读全文
摘要:
农夫John有三个装牛奶的桶,容量分别为A、B、C,数字A、B、C是1到15的整数,开始时A桶、B桶为空,C桶装满牛奶。农夫John装牛奶从一个桶倒向另一个桶,直到该桶为空或另一个桶满为止,一个倒牛奶的操作一旦开始也会结束,写一个程序帮助农夫John找出从上述状态开始在三个桶之间倒牛奶,桶C中可能剩余的牛奶的体积。运行举例:enter A B C:8 9 10 answer:1 2 8 9 10----------------------------------------------------------------------------------------------------- 阅读全文