C++:检查向量中的元素是否大于另一个具有相同索引的元素的有效方法?

C++: Efficient way to check if elements in a vector are greater than elements in another having same indices?

本文关键字:元素 索引 方法 有效 大于 检查 向量 C++ 是否 另一个      更新时间:2023-10-16

我有一个这样的vector < vector <int> >

v = {{1,2,3}, {4,2,1}, {3,1,1}....}}

v的所有元素,如v[0]v[1]v[2]...具有相同的大小。可能存在重复的元素。

我试图做的是查找并删除被另一个向量(如v[1])"主要化"的向量(如v[2]),即v[1]的所有元素都大于/等于v[2]中的相应元素(按索引顺序)。

这样做的一种天真的方法是遍历v并将每个向量与另一个向量进行比较,并进一步将每个元素与另一个向量的元素进行比较。

但我觉得必须有更好的方法来做到这一点,而不会O(n^3)v中所有向量的元素数量。

如果多个向量相等,我只需要其中一个(即删除除一个以外的所有向量)。随机选择就足够了。

任何想法或想法,不胜感激!

这称为点集的最大值。 对于二维和三维,这可以在O(n log n)时间内求解。 对于超过三维,这可以在 O(n(log n)^(d − 3) log log n) 时间内求解。 对于随机点,可以使用线性预期时间算法。