Es gibt zwei Möglichkeiten, eine Lösung für das Problem zu finden:
1. Kehren Sie ein Array im Raum um.
Schritt 1. Tauschen Sie die Elemente am Anfangs- und am Endindex aus.
Schritt 2. Inkrementieren Sie den Startindex. Verringern Sie den Endindex.
Schritt 3. Wiederholen Sie Schritt 1 und Schritt 2 bis zum Startindex <Endindex
Hierzu beträgt die zeitliche Komplexität O (n) und die räumliche Komplexität O (1).
Der Beispielcode zum Umkehren eines Arrays im Raum lautet wie folgt:
public static int[] reverseAnArrayInSpace(int[] array) {
int startIndex = 0;
int endIndex = array.length - 1;
while(startIndex < endIndex) {
int temp = array[endIndex];
array[endIndex] = array[startIndex];
array[startIndex] = temp;
startIndex++;
endIndex--;
}
return array;
}
2. Kehren Sie ein Array mit einem Hilfsarray um.
Schritt 1. Erstellen Sie ein neues Array mit einer Größe, die dem angegebenen Array entspricht.
Schritt 2. Fügen Sie Elemente ab dem Startindex und ab dem Endindex in das neue Array ein.
Hierzu beträgt die zeitliche Komplexität O (n) und die räumliche Komplexität O (n).
Der Beispielcode zum Umkehren eines Arrays mit einem Hilfsarray lautet wie folgt:
public static int[] reverseAnArrayWithAuxiliaryArray(int[] array) {
int[] reversedArray = new int[array.length];
for(int index = 0; index < array.length; index++) {
reversedArray[index] = array[array.length - index -1];
}
return reversedArray;
}
Dazu können wir auch die Collections-API von Java verwenden.
Die Collections-API verwendet intern denselben Reverse-in-Space-Ansatz.
Der Beispielcode für die Verwendung der Collections-API lautet wie folgt:
public static Integer[] reverseAnArrayWithCollections(Integer[] array) {
List<Integer> arrayList = Arrays.asList(array);
Collections.reverse(arrayList);
return arrayList.toArray(array);
}