一尘不染

在数组中查找重复项的算法

algorithm

我有一项任务,要创建一种算法来查找包含数字值的数组中的重复项。但它没有说哪种数字,整数或浮点数。我写了下面的伪代码:

 FindingDuplicateAlgorithm(A) // A is the array
      mergeSort(A);
      for  int i <- 0 to i<A.length
           if A[i] == A[i+1]
                 i++
               return  A[i]
           else
                 i++

我创建了高效的算法吗?我认为我的算法存在问题,它多次返回重复的数字。例如,如果数组在两个索引中包含两个,那么我在输出中将有…
2,2,…。我如何更改它以仅一次返回每个重复项?我认为这是一种很好的整数算法,但对浮点数也有效吗?


阅读 270

收藏
2020-07-28

共1个答案

一尘不染

要处理重复项,可以执行以下操作:

if A[i] == A[i+1]:
    result.append(A[i]) # collect found duplicates in a list
    while A[i] == A[i+1]: # skip the entire range of duplicates 
        i++               # until a new value is found
2020-07-28