系统会为您提供2 ^ 32-2唯一编号,范围从1到2 ^ 32-1。将所有数字都放入内存中是不可能的(因此不能选择排序)。要求您找到丢失的号码。解决此问题的最佳方法是什么?
假设您不能使用大整数,并且仅限于32位整数。
int通过标准输入传递。
int
主要编辑: 相信我,可以使事情变得比原本要困难得多。
我在这里假设数字是1到2 32-1( 含) 。这应该使用1个32位的额外存储位置。
编辑: 我以为我可以摆脱魔术。呃,好吧。
对于那些知道汉明代码如何工作的人来说,这是相同的想法。
基本上,对于从0到2 n -1的所有数字,该数字的每个位位置都恰好有2 (n-1) 1s。因此,将所有这些数字进行异或运算实际上应该得到0。但是,由于缺少一个数字,因此该特定列将给出1,因为在该位位置中奇数个数字。
注意: 尽管我个人更喜欢使用**运算符进行幂运算,但是我将我的运算符更改为^,因为这是OP所使用的。不要混淆^的xor。