日期:2014-05-20  浏览次数:20769 次

面试题求解
用友面试题 算法题:一个装有 1-10000 并且被打乱的数组,从中任意抽出一个数,写一个算法求出这 个数,要求用最有效率的算法;以前闲着没事的时候想过一道题和着很类似但是自己一直不知道怎么做,今天看了一下一些面试题竟然发现是面试题,所以希望各位高手能给一个解题的思路,有代码更好,谢谢了!

------解决方案--------------------
没记错的话,这个最快的算法是解 1元1次 方程。

也就是:
sum(剩下的) + x = sum(所有)

即:
x = sum(1~10000)- sum(剩下的)

所以算法很简单,就是遍历整个数组,求和,然后用 50005000 去减这个和,差就是被抽出来的数。


------解决方案--------------------
我也一开始就想java怎么实现了,忽略了数学公式
------解决方案--------------------
求1个简单
把2个数组分别加起来求差即可。

2个就好玩了

------解决方案--------------------
++
这么解决还真没想到。

探讨

没记错的话,这个最快的算法是解 1元1次 方程。

也就是:
sum(剩下的) + x = sum(所有)

即:
x = sum(1~10000)- sum(剩下的)

所以算法很简单,就是遍历整个数组,求和,然后用 50005000 去减这个和,差就是被抽出来的数。