Étant donné un tableau, la tâche consiste à inverser le tableau sans utiliser le signe de soustraction '-' n'importe où dans votre code. Il n'est pas difficile d'inverser un tableau mais l'essentiel est de ne pas utiliser l'opérateur '-'.
Recommandé : veuillez le résoudre sur ' PRATIQUE ' avant de passer à la solution.Interrogé dans : Entretien avec Moonfrog
Vous trouverez ci-dessous différentes approches :
Méthode 1 :
- Stocker les éléments du tableau dans un vecteur en C++ .
- Inversez ensuite le vecteur à l’aide de fonctions prédéfinies.
- Stockez ensuite les éléments inversés dans le tableau.
Méthode 2 :
- Stocker les éléments du tableau dans un empiler .
- Comme la pile suit Last In First Out, nous pouvons stocker les éléments du haut de la pile dans le tableau qui sera lui-même de manière inverse.
Méthode 3 :
- Dans cette méthode l’idée est d’utiliser un signe négatif mais en le stockant dans une variable.
- En utilisant cette instruction x = (INT_MIN/INT_MAX) nous obtenons -1 dans une variable x.
- Comme INT_MIN et INT_MAX ont les mêmes valeurs mais avec des signes opposés, en les divisant, cela donnera -1.
- Ensuite, « x » peut être utilisé pour décrémenter l'index à partir du dernier.
Mise en œuvre:
C++// C++ program to reverse an array without // using '-' sign #include using namespace std; // Function to reverse array void reverseArray(int arr[] int n) { // Trick to assign -1 to a variable int x = (INT_MIN / INT_MAX); // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value swap(arr[i] arr[n + (x * i) + x]); } // Drivers code int main() { int arr[] = { 5 3 7 2 1 6 }; int n = sizeof(arr) / sizeof(arr[0]); reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) cout << arr[i] << ' '; return 0; }
Java // Java program to reverse an array without // using '-' sign class GFG { // Function to reverse array static void reverseArray(int arr[] int n) { // Trick to assign -1 to a variable int x = (Integer.MIN_VALUE / Integer.MAX_VALUE); // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value swap(arr i n + (x * i) + x); } static int[] swap(int[] arr int i int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } // Drivers code public static void main(String[] args) { int arr[] = { 5 3 7 2 1 6 }; int n = arr.length; reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) System.out.print(arr[i] + ' '); } } // This code has been contributed by 29AjayKumar
Python3 # Python program to reverse an array without # using '-' sign # Function to reverse array def reverseArray(arr n): import sys # Trick to assign - 1 to a variable x = -sys.maxsize // sys.maxsize # Reverse array in simple manner for i in range(n//2): # Swap ith index value with (n-i-1)th # index value arr[i] arr[n + (x*i) + x] = arr[n + (x*i) + x] arr[i] # Driver code if __name__ == '__main__': arr = [5 3 7 2 1 6] n = len(arr) reverseArray(arr n) # print the reversed array for i in range(n): print(arr[i] end=' ') # This code is contributed by # sanjeev2552
C# // C# program to reverse an array without // using '-' sign using System; class GFG { // Function to reverse array static void reverseArray(int[] arr int n) { // Trick to assign -1 to a variable int x = (int.MinValue / int.MaxValue); // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value swap(arr i n + (x * i) + x); } static int[] swap(int[] arr int i int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } // Drivers code public static void Main() { int[] arr = { 5 3 7 2 1 6 }; int n = arr.Length; reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) Console.Write(arr[i] + ' '); } } /* This code contributed by PrinciRaj1992 */
PHP // PHP program to reverse an array without // using '-' sign // Function to reverse array function reverseArray(&$arr $n) { // Trick to assign -1 to a variable $x = (PHP_INT_MIN / PHP_INT_MAX); // Reverse array in simple manner for ($i = 0; $i < $n / 2; $i++) // Swap ith index value with (n-i-1)th // index value swap($arr $i $n + ($x * $i) + $x); } function swap(&$arr $i $j) { $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; return $arr; } // Drivers code $arr = array( 5 3 7 2 1 6 ); $n = sizeof($arr); reverseArray($arr $n); // print the reversed array for ($i = 0; $i < $n; $i++) echo($arr[$i] . ' '); // This code is contributed by Code_Mech JavaScript <script> //javascript program to reverse an array without // using '-' sign // Function to reverse array function reversearray(arrn) { // Trick to assign -1 to a variable let x = parseInt(-2147483648 / 2147483647 10); // Reverse array in simple manner for (let i = 0; i < parseInt(n / 2 10); i++) { // Swap ith index value with (n-i-1)th // index value let temp = arr[i]; arr[i] = arr[n + (x * i) + x]; arr[n + (x * i) + x] = temp; } } let arr = [ 5 3 7 2 1 6 ]; let n = arr.length; reversearray(arr n); // print the reversed array for (let i = 0; i < n; i++) document.write(arr[i] +' '); // This code is contributed by vaibhavrabadiya117. </script>
Sortir
6 1 2 7 3 5
Complexité temporelle : Sur)
Espace auxiliaire : O(1)
Méthode 4 :
In this method 4 the idea is to use bitwise operator to implement subtraction i.e. A - B = A + ~B + 1 so i-- can be written as i = i +~1 +1
Mise en œuvre:
C++// C++ program to reverse an array without // using '-' sign #include using namespace std; // Function to reverse array void reverseArray(int arr[] int n) { // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // n - i - 1 = (n + ~i + 1) + ~1 + 1 swap(arr[i] arr[(n + ~i + 1) + ~1 + 1]); } // Driver code int main() { int arr[] = { 5 3 7 2 1 6 }; int n = sizeof(arr) / sizeof(arr[0]); reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) cout << arr[i] << ' '; return 0; }
Java // Java program to reverse an array without // using '-' sign import java.util.Arrays; class GFG { // Function to reverse array static void reverseArray(int arr[] int n) { // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // n - i - 1 = (n + ~i + 1) + ~1 + 1 { swap(arr i (n + ~i + 1) + ~1 + 1); } } static int[] swap(int[] arr int i int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } // Driver code public static void main(String args[]) { int arr[] = { 5 3 7 2 1 6 }; int n = arr.length; reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) { System.out.print(arr[i] + ' '); } } } // This code contributed by Rajput-Ji
Python3 # Python program to reverse an array without # using '-' sign # Function to reverse array def reverseArray(arr n): # Reverse array in simple manner for i in range(n//2): # Swap ith index value with (n-i-1)th # index value # Note : A - B = A + ~B + 1 # So n - i = n + ~i + 1 then # n - i - 1 = (n + ~i + 1) + ~1 + 1 arr[i] arr[(n + ~i + 1) + ~1 + 1] = arr[(n + ~i + 1) + ~1 + 1]arr[i] # Driver code arr = [ 5 3 7 2 1 6 ] n = len(arr) reverseArray(arr n) # print the reversed array for i in range(n): print(arr[i]end=' ') # This code is contributed by ankush_953
C# // C# program to reverse an array without // using '-' sign using System; class GFG { // Function to reverse array static void reverseArray(int[] arr int n) { // Reverse array in simple manner for (int i = 0; i < n / 2; i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // n - i - 1 = (n + ~i + 1) + ~1 + 1 { swap(arr i (n + ~i + 1) + ~1 + 1); } } static int[] swap(int[] arr int i int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } // Driver code public static void Main(String[] args) { int[] arr = { 5 3 7 2 1 6 }; int n = arr.Length; reverseArray(arr n); // print the reversed array for (int i = 0; i < n; i++) { Console.Write(arr[i] + ' '); } } } // This code has been contributed by 29AjayKumar
PHP // PHP program to reverse an array without // using '-' sign // Function to reverse array function reverseArray(&$arr $n) { // Reverse array in simple manner for ($i = 0; $i < $n / 2; $i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // n - i - 1 = (n + ~i + 1) + 1 + 1 { swap($arr $i ($n + ~$i + 1) + ~1 + 1); } } function swap(&$arr $i $j) { $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; return $arr; } // Driver code { $arr = array( 5 3 7 2 1 6 ); $n = sizeof($arr); reverseArray($arr $n); // print the reversed array for ($i = 0; $i < $n; $i++) { echo($arr[$i] . ' '); } } // This code contributed by Code_Mech JavaScript <script> // Javascript program to reverse an array without using '-' sign // Function to reverse array function reverseArray(arr n) { // Reverse array in simple manner for (let i = 0; i < parseInt(n / 2 10); i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // n - i - 1 = (n + ~i + 1) + ~1 + 1 { swap(arr i (n + ~i + 1) + ~1 + 1); } } function swap(arr i j) { let temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; } let arr = [ 5 3 7 2 1 6 ]; let n = arr.length; reverseArray(arr n); // print the reversed array for (let i = 0; i < n; i++) { document.write(arr[i] + ' '); } // This code is contributed by mukesh07. </script>
Sortir
6 1 2 7 3 5
Complexité temporelle : O(n)
Espace auxiliaire : O(1)
Créer un quiz