面试
alive3
这个作者很懒,什么都没留下…
展开
-
面试题2 找坏球
有12个球,1个没有砝码的天秤。其中有11个球的重量是一样的,另外1个是坏球,和其他球的重量不一样,但无法确定是轻了还是重了。请问如何用天秤称3次,就找到坏球并确定是轻了还是重了。(没有砝码的天秤只能比较出两边谁重谁轻或是重量相等,无法求得具体的重量差) 将球进行编号: 1 2 3 4 5 6 7 8 9 10 11 12,分为三组:(1,2,3,4) (5,6,7,8) (9,转载 2015-03-17 10:23:16 · 454 阅读 · 0 评论 -
面试题1 落单的数
有2n+1个数,其中2n个数两两成对,1个数落单,找出这个数。要求O(n)的时间复杂度,O(1)的空间复杂度。 进阶问题:如果有2n+2个数,其中有2个数落单,该怎么办? 答: 初阶:将2n+1个数异或起来,相同的数会抵消,异或的答案就是要找的数。 进阶:假设两个不同的数是a和b,并且a!=b,将2n+2个数异或起来就会得到c=a xor b,并且c不等于0。因此在c的二进转载 2015-03-17 10:09:49 · 444 阅读 · 0 评论 -
面试题3 有序数组合并
初阶:合并两个有序数组A和B,使得结果依然有序。 进阶:合并两个有序数组A和B,假设A有n个数,B有m个数,A数组后面还有m个空余空间,需要将结果保存在A中。 答: 一种解答当然是把两个数组放在一起重新排序了。这样的时间复杂度是O(nlogn),没有用到数组已经有序的条件,所以显然不是一个期望的解答。那么既然A和B已经有序,假设从小到大排序了,那么A和B中最小的数一定是A[0]和转载 2015-03-17 10:31:07 · 614 阅读 · 0 评论