Skip to content

Commit ba31cc8

Browse files
authored
Create 493-reverse-pairs.js
1 parent 8c36371 commit ba31cc8

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

493-reverse-pairs.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
const reversePairs = function(nums) {
6+
return mergeSort(nums, 0, nums.length - 1);
7+
};
8+
9+
function mergeSort(nums, s, e) {
10+
if (s >= e) return 0;
11+
let mid = s + Math.floor((e - s) / 2);
12+
let cnt = mergeSort(nums, s, mid) + mergeSort(nums, mid + 1, e);
13+
for (let i = s, j = mid + 1; i <= mid; i++) {
14+
while (j <= e && nums[i] / 2.0 > nums[j]) j++;
15+
cnt += j - (mid + 1);
16+
}
17+
sortSubArr(nums, s, e + 1);
18+
return cnt;
19+
}
20+
21+
function sortSubArr(arr, s, e) {
22+
const tmp = arr.slice(s, e);
23+
tmp.sort((a, b) => a - b);
24+
arr.splice(s, e - s, ...tmp);
25+
}

0 commit comments

Comments
 (0)