我正在用C ++编写一个函数来评估一个带有n个整数的向量。每个整数在向量中的某处都有一个重复值,除了一个没有重复的整数。该函数应返回一个int,数组中没有重复值。
我设法制作了一个我认为在O(nlogn)时间或O(n ^ 2)中运行的工作函数,我不知道哪个。我需要在O(n)时间内运行该函数,如何更改函数以实现这样的运行时间?
int singleNumber(vector<int>& nums)
{
int s = nums.size();
for (int i = 0; i < s; i++)
{
int current = i; // current int in vector being evaluated
bool f1 = false, f2 = false;
for (int j = 0; j < s; j++)
{
if (current == nums[j] && !f1) // if one instance of current is found
f1 = true;
else if (f1 && current == nums[j]) // if 2nd instance of current is found
f2 = true;
}
if (f1 && !f2) // if only one instance of current is found
return current;
}
}
答案 0 :(得分:3)
我认为,如果你对所有元素做了xor,那么你最终会得到你的号码。