收集了几道有意思的面试题,丰富下思考方式。
http://www.cnblogs.com/zhenjing/archive/2010/10/18/1854020.html
- 一个排好序的数组A,长度为n,现在将数组A从位置m(m<n,m已知)分开,并将两部分互换位置,设计一个O(n)的算法实现这样的倒置,只允许使用一个额外空间。(循环移位的效率不高)
提示:(A’B’)’ =BA
- 有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用L做实验,要在1周内找出那桶毒酒,问最少需要多少L。
A:10只。将酒编号为1~1000,将L分别编号为1 2 4 8 16 32 64 128 256 512。喂酒时让酒的编号等于L编号的和,例如:17号酒喂给1号和16号L、76号酒喂给4号、8号和64号,七天后将死掉的L编号加起来,得到的编号就是有毒的那桶酒 因为2的10次方等于1024,所以10只L最多可以测1024桶酒。
证明如下:使用二进制表示:01, 10, 100, 1000, … , 1,000,000,000。对于任何一个小于1024的数,均可以采用前面的唯一一组二进制数来表示。故成立。
- 火车站每小时内都会从M站发两趟车分别去N和S,H每次都随机时间去坐车,但是最后发现90%次数去的N,10%次数去的S,why?
A:例如发车去S的时间2:05,发车去N的时间2:59。
- In a pitch black room you have a drawer with 27 black socks, 18 gray socks, and 9 navy socks. The socks are all individual. What is the minimum number of socks you have to pull out of the drawer to guarantee you have a matching pair of socks that is not navy?
A:12 = 9 + 3
- A man fell in a 30 meter deep well, in one day he climbs 4 meters up and at the end of the day he slips 3 meters down. How many days would it take for him to come out of the well?
A:27 days。26 + 4 meter。