O que há de errado com a minha solução Java para o Codility MissingInteger? [fechadas]

Estou tentando resolver o problema de codilidade MissingIntegerligação:

Escreva uma função:

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

que, considerando uma matriz indexada a zero não vazia A de N números inteiros, retorna o número inteiro positivo mínimo que não ocorre em A. Por exemplo, dado:

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

a função deve retornar 5.

Assuma isso:

N é um número inteiro dentro do intervalo [1..100.000]; cada elemento da matriz A é um número inteiro dentro do intervalo [−2,147,483,648..2,147,483,647].

Complexidade:

a complexidade esperada do pior caso é O (N); a complexidade esperada do espaço do pior caso é O (N), além do armazenamento de entrada (sem contar o armazenamento necessário para os argumentos de entrada). Os elementos das matrizes de entrada podem ser modificados.

Minha solução é:

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;

    }
}

O resultado do teste é:

Alguém pode me explicar por que recebi essas duas respostas erradas?&nbsp;Especialmente o primeiro, se houver apenas um elemento na matriz, a única resposta correta não deve ser 1?