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

数组中的逆序对

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

    int sum = 0;
    int P = 1000000007;
    public int InversePairs(int[] array) {
       merge(array,0,array.length-1);
        return sum;
    }
    public void merge(int[] array,int l,int r){
        if(l >= r){
            return;
        }
        int mid = l + ((r - l)>>1);
        merge(array,l,mid);
        merge(array,mid+1,r);
        int[] tmp = new int[r-l+1];
        int k = 0;
        int i = l;
        int j = mid+1;
        while(i <= mid && j <= r){
            if(array[i] <= array[j]){
                tmp[k++] = array[i++];
            }else{
                tmp[k++] = array[j++];
                sum = (sum + mid - i + 1)%P;
            }
        }
        while(i <= mid){
            tmp[k++] = array[i++];
        }
        while(j <= r){
            tmp[k++] = array[j++];
        }
        for(i = 0,j = l;i < r-l+1;i++,j++){
            array[j] = tmp[i];
       }
    }
}
全部评论

相关推荐

06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
点赞 评论 收藏
分享
king122:专业技能不要写这么多,熟悉和熟练你经不住问,排版有些难看,中间的空隙搞小一点,项目描述的话感觉是从课程中抄下来的,改一改吧,不然烂大街了,每个项目都写一两点,用什么技术实现了什么难点,然后再写一些数字上去像时间又花了90%这样,这样面试会多一些,如果觉得自己的项目还是不够用的话,我有几个大厂最近做过的实习项目,感兴趣的话可以看我简介中的项目地址
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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