Array Manipulation

Array Manipulation

Array manipulation is one of the most fundamental skills in coding interviews. Every problem involves arrays in some form, whether it’s strings, lists, or other data structures. Understanding array operations thoroughly will help you tackle a wide range of problems efficiently.

Real-World Analogy

Imagine you are organizing a bookshelf.

  • Reversing: You want to flip the order of books. You take the book from the far left and swap it with the book on the far right. Then you move your hands inward to the next pair and swap them. You repeat this until your hands meet in the middle.
  • Partitioning: You have books with Red, White, and Blue spines, and you want to group them. You create three zones: Red on the left, Blue on the right, and “Unsorted” in the middle. You pick up a book from the unsorted pile. If it’s Red, you move it to the left zone. If it’s Blue, you throw it to the right zone. If it’s White, you leave it. Eventually, the “Unsorted” zone disappears, and the shelf is sorted.

Visual Explanation

Let’s visualize the Two-Pointer Reversal technique.

We initialize two pointers, Left and Right, at opposite ends of the array. We swap the elements at these pointers and move them inward until they meet.

  graph TD
    subgraph S1 [Step 1: Initialize Pointers]
        A1[1] --- A2[2] --- A3[3] --- A4[4] --- A5[5]
        L1(Left) --> A1
        R1(Right) --> A5
    end

    subgraph S2 [Step 2: Swap & Move Inward]
        B1[5] --- B2[2] --- B3[3] --- B4[4] --- B5[1]
        L2(Left) --> B2
        R2(Right) --> B4
        style B1 fill:#f9f,stroke:#333,stroke-width:2px
        style B5 fill:#f9f,stroke:#333,stroke-width:2px
    end

    subgraph S3 [Step 3: Swap & Move Inward]
        C1[5] --- C2[4] --- C3[3] --- C4[2] --- C5[1]
        L3(Left) --> C3
        R3(Right) --> C3
        style C2 fill:#f9f,stroke:#333,stroke-width:2px
        style C4 fill:#f9f,stroke:#333,stroke-width:2px
    end

    S1 --> S2
    S2 --> S3
  1. Initialization: Left points to index 0, Right points to the last index.
  2. Swap: Elements at Left and Right are swapped.
  3. Move: Left increments, Right decrements.
  4. Repeat: Continue until Left >= Right.

When to Use This Pattern

Use array manipulation techniques when you see these characteristics:

  • Input is an array (or string)
  • Need to modify the structure of data without using extra space (
    O(1)
    space)
  • Problem involves rotating or reversing elements
  • Input requires separating elements based on a condition (e.g., move zeros to end, separate even/odd)
  • Finding subarrays with specific properties (sum, product)
  • Optimizing brute force
    O(N^2)
    solutions to linear time
    O(N)

Complexity Analysis

OperationTime ComplexitySpace ComplexityNotes
Reverse
O(N)
O(1)
We touch each element once (or half of them). No extra array needed.
Rotate
O(N)
O(1)
Can be done via 3 reversals.
Partition
O(N)
O(1)
Dutch National Flag algorithm does this in one pass.
Subarray
O(N)
O(1)
Kadane’s algorithm finds max sum in one pass.

Common Mistakes

  1. Bounds Checking: Forgetting that array indices are 0 to N-1. Accessing index N causes a crash.
  2. Off-by-One Errors: Especially when calculating the rotation pivot k or setting pointer boundaries.
  3. Empty Arrays: Failing to handle an empty input array at the start of the function.
  4. Reference vs Copy: Modifying an array passed by reference might affect the caller unexpectedly. Ensure the problem asks for in-place modification.

Next Steps

Ready to practice? Check out our Code Templates and Practice Problems pages.