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

来源:互联网 发布:人莫之知的意思是什么 编辑:程序博客网 时间:2024/04/29 22:29

有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?


方法1:

申请10w个bit的空间,每个bit代表一个数字是否出现过。
开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。
然后依次读入已经打乱循序的数字,并将对应的bit设为1。
当处理完所有数字后,根据为0的bit得出没有出现的数字。

方法2:

首先计算1到10w的和,平方和。
然后计算给定数字的和,平方和。
两次的到的数字相减,可以得到这两个数字的和,平方和。
所以我们有
x + y = n
x^2 + y^2 = m
解方程可以得到x和y的值。

原创粉丝点击