2
* @param {number[]} nums5
var reversePairs = function (nums) {6
let numReversePairs = 0;8
return numReversePairs;10
function helper(nums) {11
if (nums.length <= 1) return nums;12
const length = nums.length;13
const left = helper(nums.slice(0, Math.floor(length / 2)));14
const right = helper(nums.slice(Math.floor(length / 2)));15
return merge(left, right);18
function merge(left, right) {19
const nums_sorted = [];22
while (leftIndex < left.length && rightIndex < right.length) {23
if (left[leftIndex] > 2 * right[rightIndex]) {24
numReversePairs += left.length - leftIndex;32
while (leftIndex < left.length && rightIndex < right.length) {33
if (left[leftIndex] < right[rightIndex]) {34
nums_sorted.push(left[leftIndex]);38
nums_sorted.push(right[rightIndex]);42
while (leftIndex < left.length) {43
nums_sorted.push(left[leftIndex]);46
while (rightIndex < right.length) {47
nums_sorted.push(right[rightIndex]);