AcWing 65. 数组中的逆序对
原题链接
困难
作者:
季科
,
2019-05-19 11:58:54
,
所有人可见
,
阅读 1643
算法1
(归并排序) O(nlogn)
C++ 代码
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 inversePairs(vector<int>& nums) {
return merge(nums,0,nums.size()-1);
}
};
算法1代码过不了
更改了