Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在数组中查找奇数项(无对)的算法?_Algorithm - Fatal编程技术网

Algorithm 在数组中查找奇数项(无对)的算法?

Algorithm 在数组中查找奇数项(无对)的算法?,algorithm,Algorithm,可能重复: 什么是一个好的算法给定一个整数数组,除了一个整数以外,所有整数都出现偶数次,找到一个出现奇数次的整数 也许是一些类似于二进制搜索的东西,比如对2个大小为n/2的小数组的所有元素求和,递归比较,找出答案 编辑: 这个异或算法实际上是假定{1,1,4,4,7,7,5,8,8,9,9}吗?我的输入也可以是随机数-{1,4,1,8,9,5,4,5,9,8}。那么,在这种情况下,逻辑发生了变化 对数组中的所有项进行异或。将它们全部异或。对所有数组元素进行异或。结果将是重复奇数次的元素。都德,

可能重复:

什么是一个好的算法给定一个整数数组,除了一个整数以外,所有整数都出现偶数次,找到一个出现奇数次的整数

也许是一些类似于二进制搜索的东西,比如对2个大小为n/2的小数组的所有元素求和,递归比较,找出答案

编辑:


这个异或算法实际上是假定{1,1,4,4,7,7,5,8,8,9,9}吗?我的输入也可以是随机数-{1,4,1,8,9,5,4,5,9,8}。那么,在这种情况下,逻辑发生了变化

对数组中的所有项进行异或。

将它们全部异或。

对所有数组元素进行异或。结果将是重复奇数次的元素。

都德,对所有整数集进行异或运算。如果任何特定整数出现奇数次,这将是数组中所有数字的结果。结果是出现奇数次的数字。这是正确的,因为一个数字
xor
同一个数字给出
0
。如果运行它偶数次,结果再次为
0
。但是,如果运行它奇数次,结果是对元素进行异或。因为每个数字只出现一次,所以表示它的位将前后切换,只剩下表示唯一未出现两次的数字的位

[TestMethod]
public void SumOfPairs()
{
    var nums = new[] { 1, 1, 4, 4, 7, 7, 5, 8, 8, 12, 12 };
    int i = 0;
    foreach (var num in nums)
    {
        i ^= num;
    }

    Assert.AreEqual(5, i);
}

请注意,除非您指定的确切条件存在,否则此方法不起作用。

哦,我提出了此二进制搜索,因为我错误地将数组中的元素视为除了奇数之外的相同元素,如相同的球示例-在这种情况下,二进制可能会很好!XOR似乎很有趣。如果元素是随机存储的,但其中一个是奇数元素,那么XOR算法是否有效。亲自尝试一下,它将帮助您了解它是如何工作的。Aakash您是说逻辑对随机元素和有序元素都有效?{1,1,4,4,7,7,5,8,8,9,9} { 1 ,4,1,8,9,5,4,5,9,8} . 我需要刷很多的基金…这是我不必详细说明就可以立即产生的疑问。已经有很多重复的,例如,如果元素被随机存储,情况会是这样吗?不仅仅是配对?@Nishant:元素的顺序并不重要。自己试试看
arr=[1 2 3 2 1]