gpt4 book ai didi

c# - 查找数组中没有对的数字

转载 作者:行者123 更新时间:2023-11-30 13:44:03 26 4
gpt4 key购买 nike

我在使用一小段代码时遇到了问题,这些代码位于一个随机大小的数组中,带有随机数对,但没有一对。

我需要找到没有对的那个数字。

arLength 是数组的长度。但我在实际匹配配对时遇到了麻烦,并找到了没有配对的那个..

 for (int i = 0; i <= arLength; i++)
{ // go through the array one by one..
var number = nArray[i];

// now search through the array for a match.
for (int e = 0; e <= arLength; e++)
{
if (e != i)
{

}
}
}

我也试过这个:

var findValue = nArray.Distinct();

我四处寻找,但到目前为止,我还没有找到解决这个问题的方法。

这段代码是生成数组的代码,但是这个问题不是关于这部分代码的,只是为了清楚起见。

Random num = new Random();
int check = CheckIfOdd(num.Next(1, 1000000));
int counter = 1;

while (check <= 0)
{
if (check % 2 == 0)
{
check = CheckIfOdd(num.Next(1, 1000000)); ;
}
counter++;
}
int[] nArray = new int[check];
int arLength = 0;
//generate arrays with pairs of numbers, and one number which does not pair.
for (int i = 0; i < check; i++)
{
arLength = nArray.Length;

if (arLength == i + 1)
{
nArray[i] = i + 1;
}
else
{
nArray[i] = i;
nArray[i + 1] = i;
}
i++;
}

最佳答案

您可以使用按位运算符^来完成,复杂度为O(n)

理论

operator ^ aka xor 有下表:

enter image description here

所以假设你只有一个没有对的数字,所有的对都会被简化,因为它们是相同的。

var element = nArray[0];

for(int i = 1; i < arLength; i++)
{
element = element ^ nArray[i];
}

最后,变量 element 将是没有对的数字。

关于c# - 查找数组中没有对的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45855564/

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