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

数组中的逆序对

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

class Solution {
private:
    static constexpr long long mod=1e9+7;
public:
    //利用归并排序解决问题
    int InversePairs(vector<int> data) {
        int ret=0;
        vector<int> temp(data.size());
        merge_sort__(data,temp,0,(int)data.size()-1,ret);
        return ret;
    }

    void merge_sort__(vector<int>& arr,vector<int>& temp,int l,int r,int& ret){
        if(l>=r){
            return;
        }
        int mid=l+((r-l)>>1);
        merge_sort__(arr,temp,l,mid,ret);
        merge_sort__(arr,temp,mid+1,r,ret);
        merge__(arr,temp,l,mid,r,ret);
    }
    void merge__(vector<int>& arr,vector<int>& temp,int l,int mid,int r,int& ret){
        int i=l,j=mid+1,k=0;
        while(i<=mid&&j<=r){
            if(arr[i]>arr[j]){
                temp[k++]=arr[j++];
                ret+=(mid-i+1);
                ret%=mod;
            }else{
                temp[k++]=arr[i++];
            }
        }
        while(i<=mid){
            temp[k++]=arr[i++];
        }
        while(j<=r){
            temp[k++]=arr[j++];
        }
        for(k=0,i=l;i<=r;++i,k++){
            arr[i]=temp[k];
        }
    }
};

全部评论

相关推荐

03-03 19:02
已编辑
东华理工大学 Node.js
点赞 评论 收藏
分享
03-23 15:00
已编辑
厦门大学 Java
xiaowl:你这个简历的问题是对于技术点、项目的描述,都是描述action的,对于面试官而言,仅能知道你干了什么,无法判断你为什么这么干,干的好不好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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