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? Especialmente o primeiro, se houver apenas um elemento na matriz, a única resposta correta não deve ser 1?