一组数字1-n,随机取走3个,求被取走的数【腾讯前端面试题】
本来是搜索as3的相关资料(工作重心已经由前端开发转向webgame开发),在看帖子的时候又看到那道“腾讯前端面试题目”了,以前看到这些题目都不会太注意--感觉实际生产中不太实用。
今天也不知道哪根筯不对,鉴于之前写过那篇《从10W个数中随机抽走2个数,求出那两个数是多少 》 看完题目,想一想呢,似乎套用一下那个公式就好了。那篇文章使用的是
x + y = b;
x * x + y * y = c
解上述二元方程便可求解,那三个数,差不多类似
x + y + z = a;
x * x + y * y + z * z = b;
x * x * x + y * y * y + z * z * z = c;
…
但发现一个问题,解三元三次方程的时候容易出问题,所以这种思路并不是解这道题目比较明智的方法 :(
无论怎样,看完这道题目,我就在想,我只想使用一次循环就搞定它。因为曾经有过面试腾讯的经历,所以既然出这道题,肯定是可以只使用一次循环便可以得到结果的:)。当然使用两次循环是很容易求出结果的…
重新再读一遍题目,1~n个不重复的数 --- 如果把它当数据,那么它的值与数组的索引有对应关系arr[1] = 1… OK,只要这一个信息就可以想到办法实现它,直接先上截图。
IE8下的显示:
Chrome (ver 17.0.963.2)下:
Opera(ver 11.64)下:
Firefox(ver 10.0.2)下(10ms以内,有所波动,但不会超过10ms):
在线查看/运行示例代码: