gpt4 book ai didi

java - 使用 XOR 方法查找数组中缺失和重复的元素

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

我正在练习数组的搜索算法。

我遇到过通过对包含从 1 到 n 的整数的给定元素数组使用 XOR 方法来查找缺失和重复元素的问题。 Find the missing and duplicate elements in an array in linear time and constant space我非常能够理解我们如何获得 X 和 Y 的单独值(一个重复,另一个重复)

但是我无法理解我们如何能够确定哪些是重复的,哪些是重复的。

(根据给定的解决方案,我可以看到 XOR over list 的 xor 结果,其中有 set-bit 给出了缺失的元素,而其他列表给出了重复的元素)。但是,我无法理解达成此决定的逻辑。

请帮助我理解这个决定背后的逻辑。

最佳答案

在进行异或运算时,如果数字出现偶数次,则异或为零,如果出现奇数次,则异或为该数。

偶数 5^5 或 3^3^3^3 的异或将为零。奇数的异或 5^5^5^5^5=5 或 3^3^3=3 将是相同的数字。

如果仔细观察,您会发现找到重复项或同时缺少两者指的是同一件事。让我们举个例子来理解-因为如果缺少某个数字,则意味着该数字的频率将为零,即偶数。如果某个整数是重复的,则意味着该数字的频率将为偶数两次,每当您对同一数字进行偶数次 Xor 时,它都会导致零

Ex-考虑 dupArray(A)={1,2,3,5,5},missingArray(B)={1,2,3,4,_} 范围从 1 到 5实际数组(C)={1,2,3,4,5}

A^C={5}

B^C={5}

关于java - 使用 XOR 方法查找数组中缺失和重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345741/

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