ShareCode不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?

Posted jkol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShareCode不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?相关的知识,希望对你有一定的参考价值。

技术分享图片

如何使用异或(XOR)运算找到数组中缺失的数?

今天给大家分享一篇关于使用XOR(异或)运算找到数组中缺失的数的问题。

在一次javascript面试中,有这么一个问题:

假设有一个由0到99(包含99)的整数组成的长度为100的数组。从数组中随机移除一个元素,得到了一个长度为99的数组,那么请问如何找到所取出的数字是几?(假设数组未排序)。

大多数面试者都是按照如下方法解答的:

首先对数组进行排序,然后遍历一遍数组,检查数组中相邻两项的的差,如果差大于1,则找到缺失的数字。

这是一种有效的算法。但是由于涉及排序,会消耗额外的计算成本。所以问题在于如何在只遍历一遍数组的情况下找到缺失的数。

第一种解法

计算剩余99个整数的和,以及0-99所有整数的总和,就可以用0-99之间所有整数的总和减去数组中剩余数的和来得到缺少的数。

第二种解法

通过对所有整数[0..99]的进行XOR,然后将得到的结果对剩余数组中所有项的进行异或。

更多详细内容可以查看原文。今天的文章就分享到这啦。

以上是关于ShareCode不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?的主要内容,如果未能解决你的问题,请参考以下文章

自学软件测试天赋异禀——不是盖的

高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯

如何使用或门制作异或门?

58沈剑架构系列如何实施异构服务器的负载均衡及过载保护?

如何使用 VHDL 创建异或环形振荡器

如何使用 keras 进行异或运算