识别和删除数组中副本的最有效方法是什么?

时间:2015-11-10 13:22:22

标签: arrays

我有一个包含100万个对象的数组,它包含1个副本?识别副本并将其删除的最有效方法是什么?

1 个答案:

答案 0 :(得分:0)

  1. 如果它已排序,只需从左向右移动,直到找到其中两行

    平均复杂度:O(n / 2)

    最糟糕的复杂性:O(n)

  2. 如果它没有排序并且你有足够的内存,创建hashmap,将对象存储为键,当你按两次键时,它就是重复的。

    平均复杂度:O(n / 2)

    最糟糕的复杂性:O(n)

  3. 如果没有排序且内存不足,请使用quicksort对其进行排序,然后使用方法号。 1

    平均复杂度:O(n * log n)

    最糟糕的复杂性:O(n ^ 2)