How do you count inversions in an array efficiently?

DSA
Hard
130K views

This problem asks to count pairs (i, j) such that i < j and arr[i] > arr[j]. It tests Merge Sort adaptation.

Why Interviewers Ask This

Interviewers ask this to test advanced sorting and counting techniques. They want to see if you can modify Merge Sort to count inversions during the merge step. It demonstrates algorithmic modification.

How to Answer This Question

Explain that a brute force O(n^2) approach is too slow. Use Merge Sort: during the merge step, if an element from the right subarray is placed before an element from the left, it implies inversions. Add the count of remaining elements in the left subarray. Discuss O(n log n) complexity.

Key Points to Cover

  • Merge Sort modification
  • Inversion counting during merge
  • Left subarray remaining count
  • O(n log n) efficiency

Sample Answer

I solve this by modifying the Merge Sort algorithm. During the merge phase, when I compare elements from the left and right subarrays, if the element from the right is smaller than the element from the left, it means all…

Common Mistakes to Avoid

  • Counting only immediate inversions
  • Incorrect merge logic
  • Not handling duplicates correctly

Sound confident on this question in 5 minutes

Answer once and get a 30-second AI critique of your structure, content, and delivery. First attempt is free — no signup needed.

Try it free

Related Interview Questions

Browse all 89 DSA questions