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

来源:互联网 发布:如何打开mysql数据库 编辑:程序博客网 时间:2024/04/25 18:57

有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的值.

 

原文链接:http://hi.baidu.com/mianshiti/blog/item/70ae87470ba39d89b3b7dc7e.html

原创粉丝点击