【剑指offer】【归并】51. 数组中的逆序对
题目链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/
归并排序
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);
}
};
知识的价值不在于占有,而在于使用

浙公网安备 33010602011771号