首页 > 编程语言 > 详细

【剑指offer】【归并】51. 数组中的逆序对

时间:2020-05-04 16:24:47      阅读:52      评论:0      收藏:0      [点我收藏+]

class Solution {
public:
    int merge(vector<int>& nums, int l, int r)
    {
        if(l >= r) return 0;
        int mid = (l + r) >> 1;
        int res = merge(nums, l, mid) + merge(nums, mid + 1, r);
        int i = l, j = mid + 1;
        vector<int> temp;
        while(i <= mid && j <= r)
            if(nums[i] <= nums[j]) temp.push_back(nums[i++]);
            else{
                temp.push_back(nums[j++]);
                res += mid - i + 1;
            }
        while(i <= mid) temp.push_back(nums[i++]);
        while(j <= r) temp.push_back(nums[j++]);
        i = l;
        for(auto x : temp) nums[i++] = x;
        return res;
    }
    int reversePairs(vector<int>& nums) {
        return merge(nums, 0, nums.size() - 1);
    }
};

【剑指offer】【归并】51. 数组中的逆序对

原文:https://www.cnblogs.com/Trevo/p/12826599.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!