现在的位置: 首页 > 综合 > 正文

看到的面试题,与大家分享!若解答不妥,望留言交流……

2013年08月05日 ⁄ 综合 ⁄ 共 926字 ⁄ 字号 评论关闭

       

       下面的面试题都是我在网上或者论坛上看到,结合自己的解法,给大家分型。但是也有可能有的题目还没有看到正确解法的面试题或者笔试题,如果哪位牛人看到这些题,并且有想法或者会的话,麻烦留言,给大家分享,多谢!


1、已知一个数组,求第一个只出现一次的那个数。要求时间复杂度为O(n),空间复杂度为O(1)。

解答:http://blog.csdn.net/geniusluzh/article/details/8309796

2、求一个序列的最大和第二大的值。

解答:

       当然你可以利用冒泡的方式走两遍,那么求出来的就是最大和次大了,这个是O(2N)的复杂度,显然很不错。同样我们也可以仅仅记录一个最大值和一个次大值,遍历一遍所有元素,每次小心更新就行了。虽然从表面上看只要遍历一遍,但是我们发现每一个元素用来更新最大和次大值的时候比较的次数增多了,所以总体上复杂度没有什么太大的改进,但是至少不用遍历两遍了,还是有改进。

       至于求第K大的数,有很多博客都有写就是利用快速排序的一个子过程,平均下来的复杂度为O(2*n)的。如果你用堆的话复杂度就是O(n*logn)了。


3、2012百度研发面试题之一

      有一百盏灯泡,编号为1-100。第一轮依次把每一盏灯打开,第二轮依次把能整除2的灯泡关上,第三轮依次把能整除3的灯泡打开,第四轮一次把能整除4的灯泡关上,以此类推进行100轮操作。问最后有多少盏灯开着的。

解答:

       当然这道题,数据范围比较小,可以直接写暴力程序跑出结果。其实我们可以从数学的角度来分析这道题的规律所在。

       我们知道对于任意一个整数n,如果他为非完全平方数,那么如果存在一个整数a(小于根号n)整除n,那么一定存在对应的b大于根号n,使得a*b = n,因此对于一个非完全平方数我们认为a将其打开,一定存在一个b将其关闭,因此非完全平方的数编号的灯最后一定是关上的。对于完全平方数,存在一个根号n将其打开,而没有对应的数将其关闭,因此最后完全平方的数编号对应的灯是开着的。当然真正的过程不一定是这样子对应的,为了分析的方便你可以这样子考虑。

       接下来就是让你求[1, 100]之间有多少个完全平方数了,显然就是10个嘛!





抱歉!评论已关闭.