Hier ist ein Problem mit dem nächsten Nachbarn.
Wenn die reellen Werte (sehr großes n !) Plus das reelle Ziel p sind , finden Sie ein i und ein j, deren SUMME p am nächsten kommt . Wir erlauben angemessene Vorbearbeitung / Indizierung von einem 1 , ... , eine n (bis O ( n log n ) ), aber zum Zeitpunkt der Abfrage (gegeben p ), sollte das Ergebnis sehr schnell zurückgeführt werden (zB O ( log n ) Zeit).
(Einfacheres Beispiel: Wenn wir nur das EINZIGE , das p am nächsten kommt , würden wir eine 1 , … , ein n offline, O ( n log n ) sortieren und dann zur Abfragezeit eine binäre Suche durchführen, O ( log n ). ).
Lösungen, die nicht funktionieren:
1) Sortieren Sie offline, beginnen Sie dann zur Abfragezeit an beiden Enden und bewegen Sie zwei Zeiger nach innen ( http://bit.ly/1eKHHDy ). Nicht gut, wegen O ( n ) Abfragezeit.
2) Sortieren Sie offline, nehmen Sie dann zur Abfragezeit jedes a i und führen Sie eine binäre Suche nach einem "Kumpel" durch, der dazu beiträgt, dass sich etwas in der Nähe von p summiert . Nicht gut, da die Abfragezeit O ( n log n ) ist.
3) Sortieren Sie alle Paare offline und führen Sie dann eine binäre Suche durch. Nicht gut, da O ( n 2 ) vorverarbeitet wurde.
Vielen Dank!