题解 | #数组中的逆序对#

数组中的逆序对

http://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5

归并排序!这个一定要会啊

function InversePairs(data)
{
    let sum = 0;
    mergeSort(data);
    return sum % 1000000007;
# function mergeSort(nums){
        if(nums.length < 2) return nums;
//         不断的划分过程,包括一边可能有空的情况
        let mid = Math.floor(nums.length / 2)
        let left = nums.slice(0,mid);
        let right = nums.slice(mid);
        return merge(mergeSort(left),mergeSort(right));
    }
function merge(left,right){
    let res = [];
    let leftlen = left.length;
    let rightlen = right.length;
    let len = leftlen + rightlen;
    for(let index = 0,i = 0,j =0;index < len;index ++){
        if(i>=leftlen) res[index] = right[j++];
        else if(j>=rightlen) res[index] = left[i++];
        else if(left[i]<=right[j]) res[index] = left[i++];
        else{
//             只有当大于的时候才计数
            res[index] = right[j++];
            sum += leftlen - i;
            sum = sum % 1000000007;
        }
    }
   //console.log(res)
    return res;
 }
}
module.exports = {
    InversePairs : InversePairs
};
全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务