微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定从1到2 ^ 32-1的数字,一个缺失如何最佳地找到丢失的号码?

如何解决给定从1到2 ^ 32-1的数字,一个缺失如何最佳地找到丢失的号码?

主要编辑: 相信我,可以使事情变得比原本要困难得多。

对它们全部进行XOR。

在这里假设数字是1到2 32-1( 含) 。这应该使用1个32位的额外存储位置。

编辑: 我以为我可以摆脱魔术。呃,好吧。

说明:

对于那些知道汉明代码如何工作的人来说,这是相同的想法。

基本上,对于从0到2 n -1的所有数字,该数字的每个位位置都恰好有2 (n-1) 1s。因此,将所有这些数字进行异或运算实际上应该得到0。但是,由于缺少一个数字,因此该特定列将给出1,因为在该位位置中奇数个数字。

注意: 尽管我个人更喜欢使用**运算符进行幂运算,但是我将我的运算符更改为^,因为这是OP所使用的。不要混淆^的xor。

解决方法

系统会为您提供2 ^ 32-2唯一编号,范围从1到2 ^
32-1。将所有数字都放入内存中是不可能的(因此不能选择排序)。要求您找到丢失的号码。解决此问题的最佳方法是什么?


假设您不能使用大整数,并且仅限于32位整数。

int通过标准输入传递。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。