Już wyjaśniam.... a może najpierw moja implementacja:
public int findMinPositiveValueNotExists(final int[] array) {
Integer out = 1;
for (Integer i : array) {
if (i > 0 && i == out) {
out++;
}
}
return out;
}
Z kilku, kilkunastu testów, które wykonałem wynika, że jest poprawna (a przynajmniej nie znalazłem przypadku danych wejściowych, który by temu zaprzeczał) - może któryś z Kolegów byłby w stanie taki wskazać (dodam że przypadek Integer [] i null jako value pomijamy)?
Wymaga jednokrotnego przejścia przez tablicę, więc złożoność O(n).
Zastanawia mnie, czy to może być aż tak proste :) (porównaj z algorytmami na przytoczonej stronie, nie mówiąc o angażowaniu kolekcji)
(ponadto warunek i>0 można nawet pominąć - ale zostawiłem dla zachowania zgodności)