/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ function Inverse(nums, left, right) { if (left >= right-1) { return [0, nums]; } let mid = Math.floor((left + right) / 2); let [leftCount, leftList] = Inverse(nums.slice(0, mid),0,mid); let [rightCount, rightList] = Inverse(nums.slice(mid),0,nums.length-mid); let returnList = []; let thisCount = leftCount+rightCount; // console.log(thisCount) p1 = 0; p2 = 0; while (p1 < leftList.length || p2 < rightList.length) { if (p1 >= leftList.length) { returnList.push(...rightList.slice(p2)); break } if (p2 >= rightList.length) { returnList.push(...leftList.slice(p1)); break } if (leftList[p1] > rightList[p2]) { thisCount += rightList.length - p2; returnList.push(leftList[p1]); p1++; } else { // thisCount += leftList.length - p1; returnList.push(rightList[p2]); p2++; } } // console.log(returnList) return [thisCount,returnList] } function InversePairs(nums) { // write code here const modN = 1000000007; let left = 0; let right = nums.length; let [thisCount,returnList]=Inverse(nums, left, right) return thisCount % modN } module.exports = { InversePairs: InversePairs, };