以下是我写的问题描述和算法。有什么可以改进这个算法的地方吗?
给定一个大小未知的整数数组,其中只包含介于0和30之间的数字,请编写一个函数,返回一个整数数组,其中包含所有重复项。
int[] findDupes(int[] array) {
int[] found = new int[30];
int[] dupes = new int[30];
int dupesCount = 0;
for (int i = 0; i < array.length; i++) {
if (found[array[i]] <= 1) {
found[array[i]]++;
}else{
continue;
}
if(found[array[i]] > 1){
dupes[dupesCount++] = array[i];
if (dupesCount == 30)
break;
}
}
if (dupesCount == 0)
return new int[0];
return dupes;
}
我假设运行该算法的最佳情况为n或30(以较小值为准),而最坏情况为n,因为我必须扫描整个数组以查找重复项。有任何意见吗?