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

45次阅读

共计 432 个字符,预计需要花费 2 分钟才能阅读完成。

如何使用异或(XOR)运算找到数组中缺失的数?
今天给大家分享一篇关于使用 XOR(异或)运算找到数组中缺失的数的问题。
在一次 Javascript 面试中,有这么一个问题:
假设有一个由 0 到 99(包含 99)的整数组成的长度为 100 的数组。从数组中随机移除一个元素,得到了一个长度为 99 的数组,那么请问如何找到所取出的数字是几?(假设数组未排序)。
大多数面试者都是按照如下方法解答的:
首先对数组进行排序,然后遍历一遍数组,检查数组中相邻两项的的差,如果差大于 1,则找到缺失的数字。
这是一种有效的算法。但是由于涉及排序,会消耗额外的计算成本。所以问题在于如何在只遍历一遍数组的情况下找到缺失的数。
第一种解法
计算剩余 99 个整数的和,以及 0 -99 所有整数的总和,就可以用 0 -99 之间所有整数的总和减去数组中剩余数的和来得到缺少的数。
第二种解法
通过对所有整数 [0..99] 的进行 XOR,然后将得到的结果对剩余数组中所有项的进行异或。
更多详细内容可以查看原文。今天的文章就分享到这啦。

正文完
 0