---
Difficulty: Easy
Source: 160 Days of Problem Solving
Tags:
- Arrays
---
# π _Day 3. Reverse an Array_ π§
The problem can be found at the following link: [Problem Link](https://www.geeksforgeeks.org/batch/gfg-160-problems/track/arrays-gfg-160/problem/reverse-an-array)
## π‘ **Problem Description:**
You are given an array of integers `arr[]`. Your task is to reverse the given array.
## π **Example Walkthrough:**
**Input:**
`arr = [1, 4, 3, 2, 6, 5]`
**Output:**
`[5, 6, 2, 3, 4, 1]`
**Explanation:**
The elements of the array are `1 4 3 2 6 5`. After reversing the array, the first element goes to the last position, the second element goes to the second-last position, and so on. Hence, the answer is `[5, 6, 2, 3, 4, 1]`.
**Input:**
`arr = [4, 5, 2]`
**Output:**
`[2, 5, 4]`
**Explanation:**
The elements of the array are `4 5 2`. The reversed array will be `[2, 5, 4]`.
**Input:**
`arr = [1]`
**Output:**
`[1]`
**Explanation:**
The array has only a single element, hence the reversed array is the same as the original.
### Constraints:
- $`1 <= arr.size() <= 10^5`$
- $`0 <= arr[i] <= 10^5`$
## π― **My Approach:**
1. **Reversal Process:**
- The main idea is to reverse the array in-place by swapping elements from both ends.
- We initialize two pointers: `left` at the beginning of the array and `right` at the end.
- We swap `arr[left]` and `arr[right]`, then move `left` forward and `right` backward until they cross each other.
- This process effectively reverses the array.
2. **Alternative Approaches:**
- **XOR Swap Method:** You can swap elements using XOR to avoid a temporary variable.
- **Using List Reverse:** In some languages, you can simply call the reverse function on the array.
## π **Time and Auxiliary Space Complexity**π
- **Expected Time Complexity:** O(n), where `n` is the number of elements in the array. We perform one pass through the array, swapping elements in place.
- **Expected Auxiliary Space Complexity:** O(1), as we only use a constant amount of additional space to track the left and right pointers.
## π **Solution Code**
## Code (C)
```c
void reverseArray(int arr[], int n) {
int left = 0, right = n - 1;
while (left < right) {
arr[left] ^= arr[right];
arr[right] ^= arr[left];
arr[left] ^= arr[right];
left++;
right--;
}
}
```
π¨βπ» Alternative Approaches
### Alternative Approach (Using Temporary Variable)
```c
void reverseArray(int arr[], int n) {
int left = 0, right = n - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
```
## Code (CPP)
```cpp
class Solution {
public:
void reverseArray(std::vector& arr) {
std::reverse(arr.begin(), arr.end());
}
};
```
π¨βπ» Alternative Approaches
### Alternative Approach (Using `std::swap`)
```cpp
class Solution {
public:
void reverseArray(std::vector& arr) {
int left = 0, right = arr.size() - 1;
while (left < right) {
std::swap(arr[left], arr[right]);
left++;
right--;
}
}
};
```
### Alternative Approach (Using `XOR Swap`)
```cpp
class Solution {
public:
void reverseArray(std::vector& arr) {
int left = 0, right = arr.size() - 1;
while (left < right) {
arr[left] ^= arr[right];
arr[right] ^= arr[left];
arr[left] ^= arr[right];
left++;
right--;
}
}
};
```
## Code (Java)
```java
class Solution {
public void reverseArray(int[] arr) {
Integer[] boxedArray = Arrays.stream(arr).boxed().toArray(Integer[]::new);
List list = Arrays.asList(boxedArray);
Collections.reverse(list);
for (int i = 0; i < arr.length; i++) {
arr[i] = list.get(i);
}
}
}
```
π¨βπ» Alternative Approaches
### Alternative Approach (Using XOR Swap)
```java
class Solution {
public void reverseArray(int[] arr) {
int left = 0, right = arr.length - 1;
while (left < right) {
arr[left] = arr[left] ^ arr[right];
arr[right] = arr[left] ^ arr[right];
arr[left] = arr[left] ^ arr[right];
left++;
right--;
}
}
}
```
## Code (Python)
```python
class Solution:
def reverseArray(self, arr):
arr.reverse()
```
π¨βπ» Alternative Approaches
### Alternative Approach (Using Swapping)
```python
class Solution:
def reverseArray(self, arr):
left, right = 0, len(arr) - 1
while left < right:
arr[left], arr[right] = arr[right], arr[left]
left += 1
right -= 1
```
# π― **Contribution and Support:**
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: [Any Questions](https://www.linkedin.com/in/patel-hetkumar-sandipbhai-8b110525a/). Letβs make this learning journey more collaborative!
β If you find this helpful, please give this repository a star! β
---
πVisitor Count