Я пробовал демонстрационный тест codility, но никогда не получал более 77% из-за их тестов производительности.
тест в основном утверждает: если массив A из N целых чисел, возвращает наименьшее положительное целое число (больше чем 0) что не встречается в A.
Что не так с моим решением?
Проведенный тест производительности показывает: ОШИБКА ВРЕМЕНИ: время выполнения: 0,152 се c., Ограничение по времени: 0,100 се c.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution3 {
int solution(int[] A) {
ArrayList<Integer> list = Arrays.stream(A).boxed().distinct().sorted()
.filter(i -> i > 0)
.collect(Collectors.toCollection(ArrayList::new));
Integer prev_item = 0;
for (int i = 0; i < list.size(); i++) {
Integer item = list.get(i);
if (!(item - 1 == prev_item)) {
return prev_item + 1;
}
prev_item = item;
}
return prev_item + 1;
}
public static void main(String[] args) {
Solution3 solution3 = new Solution3();
int[] A = new int[6];
A[0] = 1;
A[1] = 2;
A[2] = 3;
A[3] = 8;
A[4] = 8;
A[5] = 11;
int solution = solution3.solution(A);
System.out.println("solution: " + solution);
}
}