Dies ist ein Interview Frage:die größtmögliche Differenz in einem Array mit dem kleineren ganzzahligen früher auftretenden
Finden Sie die größtmögliche Differenz in einem Array von ganzen Zahlen, so dass die kleinere ganze Zahl früher in der Matrix auftritt.
Einschränkung: Zahlen sind nicht eindeutig. Der Bereich ist Integer-Bereich von Java. (Oder eine andere Sprache)
Beispiel:
Eingang 1: {1, 100, 2, 105, -10, 30, 100}
Der größte Unterschied zwischen -10 und 100 -> 110 (hier -10 beim 5. Index und 100 ist an den 7. index)
Eingang 2: {1, 100, 2, 105, -10, 30, 80}
der größte Unterschied zwischen 1 und 105 -> 104 (hier ist 1 am 1. Index und 105 am 4. Index)
Mögliche Lösung:
Ein Ansatz ist für alle möglichen Unterschiede zu überprüfen und verfolgen Sie den größten Unterschied bis jetzt O (n^2) Komplexität.
kann dies in besser als O (n^2) Zeit getan werden?
Was die Beschränkungen sind, soweit vorhanden, in Bezug auf die zusätzlichen Platz, Komplexität? – Edmon
Für Interessierte gibt es auch eine O (log n) -Lösung für jedes Sub-Array nach O (n) Vorberechnung mit Segmentbäumen. Praktisch, wenn Sie viele Fragen zum selben Datensatz beantworten müssen. https://gist.github.com/elnygren/066c5387c7d102bf36a3993b37fad525 – elnygren