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

12 Jun, 2022
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 not use ‘-‘ operator. 
Asked in: Moonfrog InterviewBelow 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 a 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++
Java
Python3
C#
PHP
Javascript
// C++ program to reverse an array without// using "-" sign#include <bits/stdc++.h>using namespace std; // Function to reverse arrayvoid 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 codeint 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 program to reverse an array without// using "-" signclass 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
# Python program to reverse an array without# using "-" sign # Function to reverse arraydef 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 codeif __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# program to reverse an array without// using "-" signusing 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 arrayfunction 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 arrayfor ($i = 0; $i < $n; $i++)    echo($arr[$i] . " "); // This code is contributed by Code_Mech
<script>    //javascript program to reverse an array without    // using "-" sign     // Function to reverse array    function reversearray(arr,n)    {        // 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>
Output:  
6 1 2 7 3 5
Time Complexity: O(n)
Auxiliary Space: O(1)
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++
Java
Python3
C#
PHP
Javascript
// C++ program to reverse an array without// using "-" sign#include <bits/stdc++.h>using namespace std; // Function to reverse arrayvoid 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 codeint 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 program to reverse an array without// using "-" signimport 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
# Python program to reverse an array without# using "-" sign # Function to reverse arraydef 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 arrayfor i in range(n):    print(arr[i],end=" ") # This code is contributed by ankush_953
// C# program to reverse an array without// using "-" signusing 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
<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>
Output: 
6 1 2 7 3 5
Time Complexity: O(n) 
Auxiliary Space: O(1)
This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@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. 
29AjayKumar
princiraj1992
Akanksha_Rai
Rajput-Ji
Code_Mech
ankush_953
sanjeev2552
vaibhavrabadiya117
mukesh07
ranjanrohit840
Infosys
Moonfrog Labs
Reverse
Arrays
Bit Magic
Infosys
Moonfrog Labs
Arrays
Bit Magic
Reverse
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Data Structures
Window Sliding Technique
Search, insert and delete in an unsorted array
Chocolate Distribution Problem
What is Data Structure: Types, Classifications and Applications
Bitwise Operators in C/C++
Left Shift and Right Shift Operators in C/C++
Travelling Salesman Problem | Set 1 (Naive and Dynamic Programming)
Count set bits in an integer
How to swap two numbers without using a temporary variable?