Gegeben ein Array, für jedes Element muss ich das kleinste Element auf der rechten Seite des gegebenen Elements finden, das größer als das aktuelle Element ist.Finden Sie das nächste größere Element in einem Array
Mathematisch Für jeden Index i
in Array A
, ich brauche Index j
so dass
A[j] > A[i]
j > i
A[j] - A[i] is minimum
I j
i
Die Brute-Force-Lösung für jeden Index wäre zu finden Nötige zu finden, O(n^2)
und ich hoffe, es besser zu machen. Ich denke, dass eine O(n log n)
Lösung mit selbstausgleichenden BST möglich ist, aber das scheint ziemlich komplex. Außerdem brauche ich eine O(n)
Lösung.
Gibt es eine O(n)
Lösung für dieses Problem? Gibt es einen Beweis, dass die untere Grenze O(n log n)
ist?
Sie müssen für jeden Index finden? Oder nur ein bestimmter Index? –
Also ist der Eingang "A" und "i", der gewünschte Ausgang ist "j", s.t. die angegebenen Bedingungen gelten? – Nicolas
Ich brauche es für alle Indizes .. Nicht nur eine. Der Eingang ist '' A'' und der Ausgang ist ein Array '' B'' mit '' '' für alle Indizes '' i'' –