随笔分类 - 科技部与你共成长——算法题
摘要:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)这个题有多种方法,想想看~~~---------------------------------------------------------------------------------------------------答案:方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同。时间复杂度为O(n+logn),空间复杂度为O(1)。方法2.使用bitmap方法。定义长度为N/8的char数组,每个bit表示对应数字是否出现过。遍历数组,使用 bitmap对数字是否出现进行统
阅读全文
摘要:第一道:据说是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
阅读全文
摘要:设计一个算法把一个含有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(
阅读全文
摘要:农夫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-----------------------------------------------------------------------------------------------------
阅读全文
摘要:(tx面试题)有N个整数(N>1亿),设计算法找出其中前M个最大的数(0<M<N)的高效算法,分析其时空复杂度----------------------------------------------------------------------------------------------------------------------------------------...
阅读全文
浙公网安备 33010602011771号