c++ - 查找 vector C++ 的唯一元素

标签 c++ algorithm c++11 c++14 c++17

有没有一种快速的方法可以找到元素 vector 中的所有单个元素(只出现一次)? vector 中的所有元素都是单元素或双元素(出现两次)。我的答案是对所有元素进行排序,然后删除重复出现的元素。有什么更快的方法吗?

最佳答案

因此对于足够小的 n (<=1e8) 排序和删除(使用 std::sort()std::unique)方法仍然比散列更快表格。

示例代码:O(n log n)

vector<int>A = {1,2,3,1,2,5};
    sort(A.begin(),A.end());
    A.erase(unique(A.begin(),A.end()),A.end());
    for(int&x:A)
        cout<<x<<" ";

关于c++ - 查找 vector C++ 的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56033676/

相关文章:

c++ - 奇怪的 GCC 数组初始化行为

c++ - 重载 << 运算符和继承类

algorithm - 时间复杂度和马斯特定理

c++ - 如何在 C++ 中实现通用哈希函数

c++ - 从动态分配的解引用指针默认初始化非常量引用函数参数是否会造成内存泄漏?

c++ - C++中的多维数组代码出错

c++ - 编程领域

algorithm - 前缀和算法的时间复杂度

C++ 迭代器如何实现 next() 和 previous() 函数

c++ - 调试和发布版本中的奇怪执行时间