Я пытаюсь решить codility MissingInteger проблемы связи:
Напишите функцию:
class Solution { public int solution(int[] A); }
что для непустого массива с нулевым индексом A из N целых чисел возвращается минимальное положительное целое число, которое не встречается в A. Например, задано:
A[0] = 1 A[1] = 3 A[2] = 6 A[3] = 4 A[4] = 1 A[5] = 2
функция должна вернуть 5.
Предположим, что:
N представляет собой целое число в диапазоне [1..100,000]; каждый элемент массива A является целым числом в диапазоне [−2,147,483,648..2,147,483,647].
Сложность:
ожидаемая сложность времени в наихудшем случае составляет O (N); ожидаемая сложность пространства в худшем случае составляет O (N), за пределами хранилища ввода (не считая хранилища, необходимого для входных аргументов). Элементы входных массивов могут быть изменены.
Мое решение:
class Solution {
TreeMap<Integer,Object> all = new TreeMap<Integer,Object>();
public int solution(int[] A) {
for(int i=0; i<A.length; i++)
all.put(i+1,new Object());
for(int i=0; i<A.length; i++)
if(all.containsKey(A[i]))
all.remove(A[i]);
Iterator notOccur = all.keySet().iterator();
if(notOccur.hasNext())
return (int)notOccur.next();
return 1;
}
}
Результат теста:
Может кто-нибудь объяснить мне, почему я получил эти два неправильных ответа? Особенно первый, если в массиве только один элемент, не должен ли единственный правильный ответ быть 1?