Ich habe ein Array von n
Elementen, in denen nur ein Element nicht wiederholt wird, sonst werden alle anderen Zahlen> 1 mal wiederholt. Und es gibt keine Grenze für die Reichweite der Zahlen im Array.Finden Sie das eine sich nicht wiederholende Element im Array?
Einige Lösungen sind:
- Die Nutzung von Hash, aber, dass in der linearen Zeit Komplexität führen würde, aber sehr schlechte Raum Komplexität
- die Liste Sortierung mit MergeSort
O(nlogn)
und dann das Element zu finden, was nicht wiederholt
Gibt es eine bessere Lösung?
Hashtabellen nehmen nicht wirklich viel Platz ein: 'O (n)'. Wenn das Array so groß ist, dass Sie es an Ort und Stelle tun müssen, sollten Sie es wahrscheinlich mit einer externen Sortierung machen. – bdares
Die Komplexität eines Hash-Bereichs ist höchstens "O (n)" (für einige kleine "x" gibt es je nach Implementierung ein 'C> x'). Ich mag den "sort first approach". –
Ja, aber merge-sort (inplace) hat eine Komplexität von null. – Thilo