DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Reverse Pairs

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].

Example 1:

Input: nums = [1,3,2,3,1]
Output: 2

Example 2:

Input: nums = [2,4,3,5,1]
Output: 3

Constraints:

  • 1 <= nums.length <= 5 * 104
  • -231 <= nums[i] <= 231 - 1

SOLUTION:

import bisect

class Solution:
    def reversePairs(self, nums: List[int]) -> int:
        n = len(nums)
        sortednums = []
        ctr = 0
        for i in range(n):
            k = bisect.bisect_right(sortednums, 2 * nums[i])
            ctr += i - k
            bisect.insort(sortednums, nums[i])
        return ctr
Enter fullscreen mode Exit fullscreen mode

Top comments (0)