Wie findest du alle Ganzzahlen in einem sortierten Array der Größe n, das n / k-mal erscheint?
-
29-09-2020 - |
Frage
Ich versuche, die Lösung für dieses Problem zu finden: Wie findest du alle Ganzzahlen in einem sortierten Array von Size n, das n / k-mal in weniger als o (kLogn) -Zeit wirkt?
Ich konnte nur diese -Frage, wobei O (KLONN) -Lösung bereitgestellt wurde.
Lösung
Beginnen wir mit dem Fall $ k= 2 $ , und nehmen Sie an, dass der Algorithmus vergleichbar ist.
Ich behaupte, dass jeder Algorithmus, der sogar ein einzelnes Element findet, das $ n / 2 $ Times erscheint, einen Index $ kennen I $ so, dass $ A [i + 1]= a [i + n / 2] $ . Nehmen an, dass dies nicht der Fall ist, und lassen Sie uns die Einfachheit halber annehmen, dass die Einträge von $ A $ reelle Zahlen sind. Lassen Sie uns sagen, dass der Algorithmus die folgenden Werte bekannte:
Im Allgemeinen Fall sollte der Algorithmus einen Index $ I $ wissen, so dass $ A [I + 1]= A [i + n / k] $ für jedes Element, das ausgegeben wird. Wir können das Array in $ K / 2 $ Teile der Größe $ 2N / K $ und berücksichtigen $ (n / k + 1) ^ k $ Beispiele wie zuvor, wo der
(die Algorithmen können wahrscheinlich verbessert werden, um eine passende obere Grenze zu ergeben.)