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

How check if there is 2 or more elements with the same value in a multiset in O(N) time complexity?

本文关键字:元素 检查 何检查 集中 时间复杂度 是否      更新时间:2023-10-16

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

我正在尝试找出容器中是否有任何重复项,在 O(N( 中时间复杂度。

由于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();
}