一道面试题的思考

limboy's HQ at 
前几天下班途中跟同事聊到了一道面试题,大意是,给你 1-1000 个连续自然数,然后从中随机去掉两个,再打乱顺序,要求只遍历一次,求出被去掉的两个数。这题其实挺为面试者的,因为要求 1 分钟内说出解法,且不能使用计算机、纸和笔。如果之前没有遇到过类似的题目,加上面试时的紧张心情,很难能在那么短的时间里想到解决方案,至少我做不到。好在我有时间,上网看了一下,比较常见的有两种方法求方程组的解遍历被打乱的数组时,计算 value 的累加值和 value 平方的累加值。结合未打乱之前的数组,这样就能得出 x+y = m 与 xx+yy = n 两个方程,解这组方程即可算出被去掉的两个数。这种方法比较容……