¿Qué tiene de malo mi solución Java para Codility MissingInteger? [cerrado]

Estoy tratando de resolver el problema de la codilidad MissingIntegerenlazar:

Escribe una función:

class Solution { public int solution(int[] A); }

que, dada una matriz A de N enteros indexados a cero no vacía, devuelve el entero positivo mínimo que no ocurre en A. Por ejemplo, dado:

 A[0] = 1    
 A[1] = 3    
 A[2] = 6
 A[3] = 4    
 A[4] = 1    
 A[5] = 2

la función debería devolver 5.

Asumir que:

N es un número entero dentro del rango [1..100,000]; cada elemento de la matriz A es un número entero dentro del rango [−2,147,483,648..2,147,483,647].

Complejidad:

la complejidad esperada en el peor de los casos es O (N); La complejidad esperada en el peor de los casos es O (N), más allá del almacenamiento de entrada (sin contar el almacenamiento requerido para los argumentos de entrada). Los elementos de las matrices de entrada se pueden modificar.

Mi solución es:

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;

    }
}

El resultado de la prueba es:

¿Alguien puede explicarme por qué obtuve estas dos respuestas incorrectas? Especialmente el primero, si solo hay un elemento en la matriz, ¿no debería ser la única respuesta correcta 1?

Respuestas a la pregunta(5)

Su respuesta a la pregunta