如何检查O(N)时间复杂度的多集中是否有2个或多个具有相同值的元素?

时间:2019-04-28 08:38:44

标签: c++

我有一个multiset /任何具有某些值的容器 例如{1,2,3,4,5,5}->这将返回一些值; {1,2,3,4,5}->将返回其他值;

我正在尝试找出容器中是否有重复项(以O(N)为单位) 时间复杂度。

1 个答案:

答案 0 :(得分:0)

由于std::multiset是有序的容器,因此任何重复项都是连续的。 std::adjacent_find算法搜索连续的相同元素(线性复杂度)。

这是一个简单的布尔函数,用于测试重复的int值。

#include <algorithm>

bool has_duplicates(const std::multiset<int> &mset)
{
    return std::adjacent_find(mset.begin(), mset.end()) != mset.end();
}