878387. Middle swap

Easy

Middle Swap

Summary

The Middle Swap problem involves finding and swapping the middle elements in an array. Given a sorted array, we need to swap the middle two elements if they are equal.

Detailed Explanation

We will start by identifying the middle element of the array. If the length of the array is odd, the middle element will be at the floor of half the length of the array (since indexing starts from 0). If the length of the array is even, we can consider either the first or second middle elements as the target for swapping.

To solve this problem, we iterate through the array to find the middle element. We then check if it's equal to the next element in the array. If they are equal, we swap them. This process ensures that the middle two elements are swapped only once, maintaining the original order of the rest of the array.

Here is a step-by-step breakdown:

  1. Calculate the middle index of the array.
  2. Check if the middle element is equal to the next element in the array.
  3. If they are equal, swap them and move on to the next iteration.
  4. Continue this process until we have processed the entire array.

Time complexity: O(n), where n is the length of the array. We iterate through the array once, so the time complexity is linear.

Space complexity: O(1), as we only use a constant amount of space to store the middle index and swap temporary variables.

Optimized Solutions

Java

View on GeeksforGeeks
public class MiddleSwap {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        int n = arr.length;
        if (n % 2 == 0) {
            int mid1 = n / 2 - 1;
            int mid2 = n / 2;
            if (arr[mid1] == arr[mid2]) {
                swap(arr, mid1, mid2);
            }
        } else {
            int mid = n / 2;
            if (arr[mid] == arr[mid + 1]) {
                swap(arr, mid, mid + 1);
            }
        }
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.