Dies ist eine interessante Frage, die ich im Internet gefunden habe. Bei einem Array mit n Zahlen (ohne Informationen darüber) sollten wir das Array in linearer Zeit vorverarbeiten, damit wir die k kleinsten Elemente in der O (k) -Zeit zurückgeben können, wenn wir eine Zahl 1 <= k erhalten <= n
Ich habe dieses Problem mit einigen Freunden diskutiert, aber niemand konnte eine Lösung finden. Jede Hilfe wäre dankbar!
Kurznotizen: - Die Reihenfolge der k kleinsten Elemente ist nicht wichtig - Die Elemente im Array sind Zahlen, können ganze Zahlen sein und sind möglicherweise nicht (also keine Grundsortierung) - Die Zahl k ist in der Vorverarbeitungsphase nicht bekannt. Die Vorverarbeitung ist O (n) -Zeit. die Funktion (finde k kleinste Elemente) auf O (k) Zeit.