首页 > 试题广场 >

找出1到10w中没有出现的两个数字。

[问答题]
有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?
推荐
申请10w个bit的空间,每个bit代表一个数字是否出现过。 开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。 然后依次读入已经打乱循序的数字,并将对应的bit设为1。 当处理完所有数字后,根据为0的bit得出没有出现的数字。 首先计算1到10w的和,平方和。 然后计算给定数字的和,平方和。 两次的到的数字相减,可以得到这两个数字的和,平方和。 所以我们有 x + y = n x^2 + y^2 = m 解方程可以得到x和y的值。
编辑于 2015-02-04 11:26:48 回复(0)
更多回答
boolean num[100000]
遍历这10万个数,如果 i 存在,则置num[i]= true
遍历结束后,剩下的2个false的i值就是所求
发表于 2015-07-06 10:36:33 回复(0)