Ada dua cara untuk memiliki solusi untuk masalah ini:
1. Membalikkan array dalam ruang.
Langkah 1. Tukar elemen pada awal dan akhir indeks.
Langkah 2. Tambahkan indeks awal, turunkan indeks akhir.
Langkah 3. Ulangi Langkah 1 dan Langkah 2 hingga mulai indeks <indeks akhir
Untuk ini, kompleksitas waktu akan menjadi O (n) dan kompleksitas ruang akan menjadi O (1)
Kode contoh untuk membalikkan array dalam ruang adalah seperti:
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. Membalikkan array menggunakan array bantu.
Langkah 1. Buat array ukuran baru yang sama dengan array yang diberikan.
Langkah 2. Masukkan elemen ke array baru mulai dari indeks awal, dari array yang diberikan mulai dari indeks akhir.
Untuk ini, kompleksitas waktu akan menjadi O (n) dan kompleksitas ruang akan menjadi O (n)
Kode contoh untuk membalikkan array dengan array bantu adalah seperti:
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;
}
Kami juga dapat menggunakan API Koleksi dari Jawa untuk melakukan ini.
API Koleksi secara internal menggunakan pendekatan membalikkan ruang yang sama.
Kode contoh untuk menggunakan API Koleksi adalah seperti:
public static Integer[] reverseAnArrayWithCollections(Integer[] array) {
List<Integer> arrayList = Arrays.asList(array);
Collections.reverse(arrayList);
return arrayList.toArray(array);
}