LeetCode 493, Hard. Topics: Array, Binary Search, Divide and Conquer, Binary Indexed Tree, Segment Tree, Merge Sort, Ordered Set, Treap. View on LeetCode.
Generate this problem as a practice environment: tested reference solution, 22 parametrized pytest cases, and a playground notebook:
Problem
Given an integer array nums, return the number of reverse pairs in the array.
A reverse pair is a pair (i, j) where:
0 <= i < j < nums.length and
nums[i] > 2 * nums[j].
Examples
Explanation: The reverse pairs are:
(1, 4) —> nums[1] = 3, nums[4] = 1, 3 > 2 * 1
(3, 4) —> nums[3] = 3, nums[4] = 1, 3 > 2 * 1
Explanation: The reverse pairs are:
(1, 4) —> nums[1] = 4, nums[4] = 1, 4 > 2 * 1
(2, 4) —> nums[2] = 3, nums[4] = 1, 3 > 2 * 1
(3, 4) —> nums[3] = 5, nums[4] = 1, 5 > 2 * 1
Constraints
- 1 <= nums.length <= 5 * 10^4
- -2^31 <= nums[i] <= 2^31 - 1
Solution
Reference implementation from solution.py on GitHub, full suite in test_solution.py:
Complexity
Last modified on September 7, 2026