¿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?