我有一项任务,要创建一种算法来查找包含数字值的数组中的重复项。但它没有说哪种数字,整数或浮点数。我写了下面的伪代码:
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,…。我如何更改它以仅一次返回每个重复项?我认为这是一种很好的整数算法,但对浮点数也有效吗?
要处理重复项,可以执行以下操作:
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