2016-10-03 82 views
0

我有一个属于两个类别A & B的元素列表。每个元素都有一个属性P.要求是属性P不能有相同的值任何两个属于不同类别的元素。我们必须找到所有共享相同属性值并违反此规则的元素。 使用C++ STL/boost库实现它的最简单方法是什么?我正在使用gcc 4.8.3。所以任何需要C++ 14或更高版本的解决方案都无法工作。使用STL寻找具有匹配属性的元素的算法

+0

请您提供您的输入数据的小例子。假设你的测试数据很难。 – Naidu

+0

idk关于你的情况....但是当我处于类似的情况时,我更喜欢一个['std :: unordered_set'](http://en.cppreference.com/w/cpp/container/unordered_set)的清单,这样的问题永远不会出现。 –

回答

1

在P上对列表进行排序。这会将具有相同P的所有元素放在一起。所以你现在可以走这个列表,并且对于每个相邻的对,检查它们是否具有相同的P并且是不同的类别。

O(n log n)为排序和O(n)走路列表并检查。