# Reverse an array without using subtract sign ‘-‘ anywhere in the code

Given an array, the task is to reverse the array without using subtract sign ‘-‘ anywhere in your code. It is not tough to reverse an array but the main thing is to note use ‘-‘ operator.

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

Asked in: Moonfrog Interview

Below are different approaches:

Method 1:
1- Store array elements into a vector in C++.
2- Then reverse the vector using predefined functions.
3- Then store reversed elements into the array back.

Method 2:
1- Store array elements into a stack.
2- As the stack follows Last In First Out, so we can store elements from
top of the stack into the array which will be itself in a reverse manner.

Method 3:
1- In this method the idea is to use negative sign but by storing it into a variable.
2- By using this statement x = (INT_MIN/INT_MAX), we get -1 in a variable x.
3- As INT_MIN and INT_MAX have same values just of opposite signs,so on dividing them it will give -1.
4- Then ‘x’ can be used in decrementing the index from last.

## 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

## 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 `

## 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 */`

Output:

```6 1 2 7 3 5
```

Method 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

 `// C++ program to reverse an array without ` `// using "-" sign ` `#include ` `using` `namespace` `std; ` ` `  `// Function to reverse array ` `void` `reverseArray(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `x = (INT_MIN/INT_MAX); ` ` `  `    ``// Reverse array in simple manner ` `    ``for` `(``int` `i = 0; i

Output:

```6 1 2 7 3 5
```

This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up

Improved By : 29AjayKumar, princiraj1992