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

数组中的逆序对

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

public class Solution {
    public int InversePairs(int [] array) {
        int len = array.length;
        int start = 0 ;
        int end = len - 1;
        int []copy = new int[len];
        for (int i = 0 ; i < len ; i++) {
            copy[i] = array[i];
        }
        Long count  = merge1(array, copy, start, end);
        return (int)(count%1000000007L);
    }

    public Long merge1(int []array, int []copy, int start, int end) {
        if (start == end) { //已经为最小分组
            copy[start] = array[start];
            return 0L;
        }
        int mid = start + ((end - start) >> 1);
        Long left = merge1(copy, array, start, mid);
        Long right = merge1(copy, array, mid + 1, end);
        int count = 0;
        int i = mid;
        int j = end;
        int copyend = end;

        while (i >= start && j >=  mid + 1) {
            if (array[i] > array[j]) {
                copy[copyend--] = array[i--];
                count += j - mid;
            } else {
                copy[copyend--] = array[j--];
            }
        }
        for (; i >= start; i--) {
            copy[copyend--] = array[i];
        }
        for (; j >=  mid + 1; j--) {
            copy[copyend--] = array[j];
        }
        return left + right + count;
    }
}

全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务