Angenommen, wir erhalten ein Array das nichtnegative ganze Zahlen enthält (nicht unbedingt verschieden).
Lassen sein A in der nichtwachsende Reihenfolge sortiert. Wir wollen m = max i ∈ [ n ] B [ i ] + i berechnen .
Die naheliegende Lösung besteht darin, sortieren und dann m zu berechnen . Dies ergibt einen Algorithmus, der im schlimmsten Fall in der Zeit O ( n lg n ) läuft .
Kann man es besser machen? Können wir in linearer Zeit berechnen ?
Meine Hauptfrage ist die oben. Es wäre jedoch interessant, die folgende Verallgemeinerung des Problems zu kennen.
Lassen werden A , sortiert nach irgendeinem Vergleich Oracle ≤ und f eine Funktion von einem Oracle gegeben. Gegeben A und Orakel für ≤ und f , was können wir sagen , über die benötigte Zeit zu berechnen m = max i ∈ [ n ] f ( B [ i ] , i ) ?
Wir können immer noch in O ( n lg n ) Zeit berechnen . Aber können wir für diesen verallgemeinerten Fall eine superlineare Untergrenze beweisen?
quelle