1.现在有100亿个数字大小为1到10亿的数字,在这100亿个数字里边只有一个数字出现的次数是奇数次的,你用什么方法,找出这个数字呢?
答:显然至少要全部过一遍,可以用位运算,遍历数组,最后剩下的数字就是出现奇数次的数字(^运算 a^b^b = a)
2.A和B分苹果。分苹果策略是一次一个或者两个,A先拿,然后B拿,然后A拿..一直到拿完问什么方案,能让A拿到最后一个苹果呢?
答:A先拿一次,确保剩下的是3的倍数,接下来B一个或两个,A一个或两个,确保BA各拿一次合起来是三个,直到最后三个。最后三个不论
谁先拿都可以确保A最后拿。
3.随机发牌。有10000张牌,随机发出一张,要使得随机发出的牌不重复,而且时间、空间复杂度要恒定。你觉得怎样做可以达到这个目的呢?
答:面试官的回答,随机打一张后,把该张牌跟最后一张对调,接下来的随机的范围缩小一位,如此循环。