在O(n)中计算数组中的重复项(不一定要删除)

时间:2010-05-19 15:54:49

标签: algorithm big-o

这是一个赋值,并且是伪造的代码。

我需要找到数组中有多少个整数是唯一的,没有别的,但它必须在O(n)中,最好没有散列。

谢谢!

2 个答案:

答案 0 :(得分:1)

这个伪代码怎么样?


array randomNumbers;
array unique;
int uniqueCount = 0;

for (i in randomNumbers) {

  unique[i] += 1;
  uniqueCount++; //count all here
  // and remove duplicities here
  if (unique[i] > 1) {
    uniqueCount--;
  }
}
return uniqueCount;

并且前提是,未声明的唯一[i]是0

答案 1 :(得分:0)

只需遍历数组中的每个元素并跟踪您看到的元素,当您看到重复的元素时,就会报告它。

另外,根据你如何跟踪元素,它可能是也可能不是O(n),但我会把那部分留给你,你至少要学习一些东西。