Ниже приведено описание проблемы и алгоритм, который я написал. Что-нибудь нужно сделать, чтобы улучшить этот алгоритм?
Учитывая целочисленный массив неизвестного размера, содержащий только числа от 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, так как мне приходится сканировать весь массив, чтобы найти дубликаты. Есть комментарии?