function InversePairs(data)
{
// write code here
if(data.length < 2) return 0
const copy = [...data]
const result = mergeSort(data, copy, 0, data.length - 1) % 1000000007
return result
}
function mergeSort(data, copy, left, right) {
if(left === right) {
copy[left] = data[right]
return 0
}
let count = 0
const mid = Math.floor((left + right) / 2)
count += mergeSort(copy, data, left, mid)
count += mergeSort(copy, data, mid + 1, right)
let [i, j, k] = [mid, right, right]
while(i >= left && j >= mid + 1) {
if(data[i] > data[j]) {
copy[k--] = data[i--]
count += j - mid
} else {
copy[k--] = data[j--]
}
}
while(i >= left) copy[k--] = data[i--]
while(j >= mid + 1) copy[k--] = data[j--]
return count
}
module.exports = {
InversePairs : InversePairs
};
抄于排行榜中

京公网安备 11010502036488号