【问题标题】:fastest way to find unique pairs in a 2d vector在二维向量中找到唯一对的最快方法
【发布时间】:2017-07-25 18:58:39
【问题描述】:

我正在寻找一种高效且快速的算法来查找二维向量中的唯一对。 例如: vec=[[1 5] [2 2] [1 5] [3 1] [6 3] [2 2]] 我想生成下面只有唯一对的二维向量。 vec=[[1 5] [2 2] [3 1] [6 3]]

非常感谢使用伪代码(或任何类似 C 的语法)进行演示。

提前感谢

【问题讨论】:

  • 如果您正在寻找 c 风格的语法,为什么不在您的帖子中标记该语言?
  • 除了在此处发布之外,您还做了什么来寻求答案?

标签: arrays algorithm search find unique


【解决方案1】:

不知道你要找多快的算法但是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】:

    我认为这个问题可以在 O(n) 内解决,最好是 O(n),最坏是 o(2n)

    【讨论】:

      【解决方案3】:

      python 你去吧:

      set([(1,2), (2,3),(1,2)]
      

      在 C++ 中,您可以使用 unordered set: http://www.cplusplus.com/reference/unordered_set/unordered_set/

      使用pair&lt;int,int&gt; 获取积分

      【讨论】:

        【解决方案4】:

        这是一个 O(n log n) 时间解决方案。

        sort(vec.begin(), vec.end());
        auto new_size = unique(vec.begin(), vec.end()) - vec.begin();
        vec.resize(new_size);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-04
          • 2019-10-30
          • 1970-01-01
          • 1970-01-01
          • 2019-11-18
          • 2023-03-04
          • 1970-01-01
          相关资源
          最近更新 更多