Wie finden Sie die kth kleinste element in der Vereinigung von zwei sortierten arrays?

Dies ist eine Hausaufgaben Frage. Sie sagen, es dauert O(logN + logM) wo N und M sind die arrays Längen.

Let name des arrays a und b. Natürlich können wir das alles ignorieren a[i] und b[i] wo ich > k.

Zuerst vergleichen wir a[k/2] und b[k/2]. Lassen Sie b[k/2] > a[k/2]. Deshalb können wir verwerfen auch alle b[i], wo ich > k/2.

Nun haben wir alle a[i], wo ich < k und alle b[i], wo ich < k/2 um die Antwort zu finden.

Was ist der nächste Schritt?

Wurden alle diese Schritte, die in der Aufgabe enthalten ist, oder sind die oben genannten Schritte den Beginn Ihres Algorithmus?
Die oben genannten Schritte sind von mir.
Ist O(logN + logM) nur mit Bezug auf die Zeit, die es dauert, zu finden, die kth-element? Kann eine Vorverarbeitung durchgeführt werden, um die union vorher?
Keine Vorverarbeitung erwartet.
Duplikate sind erlaubt in den arrays?

InformationsquelleAutor Michael | 2011-01-05

Schreibe einen Kommentar