Was stimmt nicht mit meiner Java-Lösung für Codility MissingInteger? [geschlossen
Ich versuche das Codility MissingInteger Problem zu lösenVerknüpfun:
Schreibe eine Funktion:
class Solution { public int solution(int[] A); }
that gibt bei einem nicht leeren, nullindexierten Array A mit N Ganzzahlen die minimale positive Ganzzahl zurück, die in A nicht vorkommt. Beispiel:
A[0] = 1
A[1] = 3
A[2] = 6
A[3] = 4
A[4] = 1
A[5] = 2
die Funktion sollte 5 zurückgeben.
Annehmen, dass
N ist eine ganze Zahl im Bereich [1..100.000]; jedes Element von Array A ist eine ganze Zahl im Bereich von [−2,147,483,648..2,147,483,647].
Komplexität
Erwartete Zeitkomplexität im ungünstigsten Fall ist O (N); Die erwartete Speicherkomplexität im ungünstigsten Fall ist O (N) jenseits des Eingabespeichers (ohne den für Eingabeargumente erforderlichen Speicher). Elemente von Eingabearrays können geändert werden.
Meine Lösung ist:
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;
}
}
Das Testergebnis lautet:
ann mir jemand erklären, warum ich diese zwei falschen Antworten erhalten hab Vor allem das erste, wenn es nur ein Element im Array gibt, sollte die einzig richtige Antwort nicht 1 sein?