在c ++中找到重复的向量中的单个int

时间:2015-07-13 14:10:10

标签: c++ vector integer

我正在用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;
    }


}

1 个答案:

答案 0 :(得分:3)

我认为,如果你对所有元素做了xor,那么你最终会得到你的号码。