我正在寻找一种有效且快速的算法来查找二维矢量中的唯一对。 例如: vec = [[1 5] [2 2] [1 5] [3 1] [6 3] [2 2]] 我想生成下面只有唯一对的2d向量。 vec = [[1 5] [2 2] [3 1] [6 3]]
非常感谢使用伪代码(或任何类似C语法)的演示。
非常感谢
答案 0 :(得分:0)
我认为这个问题可以在O(n)中解决,最好的是O(n),最差的是o(2n)
答案 1 :(得分:0)
我不知道你在寻找多快的算法,但是NlogN + N算法的想法
//create an extra vector, we call it sol
vec = [[1 5], [2 2], [1 5], [3 1], [6 3], [2 2]]
sort(vec)
i = 0
while i < vec.length()
sol.push_back(i)
i = i + 1
while i < vec.length() and vec[i] == vec[i-1]
i = i + 1
sol是你想要的矢量
答案 2 :(得分:0)
set([(1,2), (2,3),(1,2)]
在C ++中,您可以使用unordered set
:http://www.cplusplus.com/reference/unordered_set/unordered_set/
使用pair<int,int>
作为积分
答案 3 :(得分:0)
这是一个O(n log n)时间到位的解决方案。
sort(vec.begin(), vec.end());
auto new_size = unique(vec.begin(), vec.end()) - vec.begin();
vec.resize(new_size);