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

数组中的逆序对

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

class Solution {
public:
    int find(vector<int> vec, int target) {
        int l = 0, r = vec.size() - 1;
        while(l < r) {
            int mid = (l + r) / 2;
            if(target > vec[mid])
                l = mid + 1;
            else
                r = mid;
        }
        return l;
    }
    int InversePairs(vector<int> data) {
        int res = 0;
        int n = data.size();
        if( n < 2)
            return res;
        
        vector<int> temp;
        temp.push_back(data[n-1]);
        
        for(int i = n - 2; i >= 0; i--) {
            int index = find(temp, data[i]);
            if(data[i] > temp[index]) {
                res += (index + 1);
                res = res % 1000000007;
                temp.insert(temp.begin() + index + 1, data[i]);
            }else {
                res += index ;
                res = res % 1000000007;
                temp.insert(temp.begin() + index, data[i]);
            }
        }
        return res;
    }
};
全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务