gpt4 book ai didi

arrays - 如何在 xor 方法的数组中查找重复项?算法复杂度 O(n)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:45 27 4
gpt4 key购买 nike

如何查找数组中的重复项。在逆问题的情况下,当您必须找到所有元素的唯一元素时,您只需对所有元素进行异或,结果我们获得了一个唯一元素。例如

int a[] = {2, 2, 3, 3, 4, 5, 5, 16, 16};
int res = a[0];
for(int i = 0; i < 9; ++i)
res ^= a[i];

例如给定一个数组

int a[] = {2, 4, 7, 8, 4, 5};

这里a duplicate是4,但是不清楚如何找到数组的重复元素。

最佳答案

您正在描述 Element Distinctness Problem .

如果没有额外的空间(和散列),就没有O(n) 的元素差异性问题的解决方案,因此您不能修改此问题的“重复异或算法”。

这个问题的解决方案是:

  1. 对排序后的数组进行排序和迭代以查找重复项(在排序后的数组中很容易)。这是 O(nlogn) 时间。
  2. 构建一个 histogram数据(基于哈希)并在完成后迭代直方图以验证直方图中所有元素的值是否为 1 - O(n) average 情况,O( n) 空间。

关于arrays - 如何在 xor 方法的数组中查找重复项?算法复杂度 O(n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899195/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com