0

给定一组 100 万(非常大)的编号。URL 的。从列表中找到“第一个”“唯一”URL。

我的方法:使用完美的散列函数构建散列,这会有所帮助。但是我的问题是散列大数据是不可能的,那么我该如何解决这个问题。

有什么方法可以就地做吗?请帮忙。提前致谢。

4

1 回答 1

1

给定一个输入列表["c","a","b","a","c"],我的第一种方法是:

  1. 将 URL 列表转换为元组列表,该列表将每个元素与其在列表中的位置相关联。现在你有[(0,"c"),(1,"a"),(2,"b"),(3,"a"),(4,"c")].
  2. 按第二个元组元素(URL)按字典顺序对列表进行排序。现在你有[(1,"a"),(3,"a"),(2,"b"),(0,"c"),(4,"c")].
  3. 将后续相等元组的序列(如果第二个元素相等,则元组相等)分组到子列表中。现在你有[[(1,"a"),(3,"a")],[(2,"b")],[(0,"c"),(4,"c")]].
  4. 过滤列表,使您只有长度为 1 的列表。现在您有了[[(2,"b")]].
  5. 如果结果列表为空,则列表中没有唯一的 URL。如果它非空,则按第一个元组元素(字符串中的位置)对列表进行排序。在这种情况下,您会得到相同的列表 - [[(2,"b")]]
  6. 取列表的第一个元素。现在你有[(2,"b")].
  7. 此列表中的 ( only ) 元组告诉您第一个唯一 URL,以及输入列表中的位置:它是输入列表b中位置的 URL 2
于 2012-08-31T07:09:43.883 回答