Skip to content

Latest commit

 

History

History
49 lines (38 loc) · 1.22 KB

File metadata and controls

49 lines (38 loc) · 1.22 KB

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

Example 2:

Input: nums = [2,4,3,5,1]
Output: 3
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 * 104
  • -231 <= nums[i] <= 231 - 1

Solutions (Python)

1. Solution

from sortedcontainers import SortedList


class Solution:
    def reversePairs(self, nums: List[int]) -> int:
        sortednums = SortedList()
        ret = 0

        for num in nums:
            ret += len(sortednums) - sortednums.bisect_right(2 * num)
            sortednums.add(num)

        return ret