Ich versuche, einen Algorithmus zu lösen, wobei ich das dest größer Element auf der rechten Seite eines Arrays zu finden haben referenceFinden gelinde größere Element auf der rechten Seite
Für eine Instanz in der unten Array Input: [8 58, 71, 18, 31, 32, 63, 92, 43, 3, 91, 93, 25, 80, 28]
Das am wenigsten größere Element auf der rechten Seite für das erste Element 8 ist 18, z das zweite Element 58 ist 63 & so weiter. Ich brauche Hilfe bei der Logik, um den Algorithmus zu lösen. Ich beabsichtige, zuerst mit roher Gewalt mit einer Komplexität von O (n^2) zu lösen.
Der Code, den ich bis jetzt geschrieben habe, ist unter
public class Tmp {
public static void main(String[] args) {
int[] arr = { 8, 58, 71, 18, 31, 32, 63, 92, 43, 3, 91, 93, 25, 80, 28 };
int[] tmpArr = new int[arr.length];
int pos = 0;
int k=0;
for (int i = 0; i < arr.length-1; i++) {
//int next = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if ((arr[j] > arr[i])) {
tmpArr[k]=arr[j]; // take all the values to the right of the element which are greater than it
k++;
}
}
ich das zweite Array tmpArr erstellt haben alle Werte auf der rechten Seite eines Elements zu ergreifen, die als eine sie größer sind. Wahrscheinlich sortiere das Array dann & den ersten Wert nehmen. Aber diese Logik scheint mir nicht in Ordnung zu sein.
können andere Lösung
seinfor (int i = 0; i < arr.length-1; i++) {
int leastGreater = ? //Don't know what to initialize with
for (int j = i + 1; j < arr.length; j++) {
if ((arr[j] > arr[i])) {
if(arr[j]<leastGreater){
leastGreater = arr[j];
}
}
}
jemand mit einer einfacheren Lösung helfen?
(Initialisieren Sie "aktuelle minimale Variablen" mit ('Integer') [' MAX_VALUE'] (http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html # field.summary)) Das verknüpfte Problem lautet 'Geben Sie ein Array von Ganzzahlen an, ersetzen Sie jedes Element durch das kleinste größere Element [to] sein Recht ': Bitte geben Sie an, ob Sie _find_ oder _replace_ wollen. – greybeard
Sobald ich finde, kann ich leicht ersetzen, also fand die PRB. Jetzt ist es behoben, sobald ich die kleinste Variable mit Integer.MAX_VALUE initialisiert habe. – underdog
Bitte geben Sie in der Frage, ob Sie _find_ oder _replace_: _replace_, eine einfachere Lösung vorschlagen möchten. – greybeard