### 解题思路
利用归并排序算法:
由于用于归并的两个序列是已序的,所以在进行两辆比对时,序列A中的一个数大于序列B中的一个数,那么序列A中这个数的后面所有数都大于这个数
### 代码
class Solution {
public:
int res = 0;
vector<int> temp;
int mergeSort(vector<int>& nums,int l,int r){
if(l >= r) return 0;
int mid = (l + r) >> 1;
int t1 = mergeSort(nums,l,mid);
int t2 = mergeSort(nums,mid+1,r);
int p1 = l,p2 = mid+1,k=0;
int t3 = 0;
while(p1 <= mid && p2 <= r){
if(nums[p1] > nums[p2]){
temp[k++] = nums[p2++];
t3 += mid-p1+1;
}
else temp[k++] = nums[p1++];
}
while(p1 <= mid) temp[k++] = nums[p1++];
while(p2 <= r) temp[k++] = nums[p2++];
for(int i = l,j=0;i <= r;i++,j++) nums[i] = temp[j];
return t1 + t2 + t3;
}
int reversePairs(vector<int>& nums) {
temp = vector<int>(nums.size(),0);
int res = mergeSort(nums,0,nums.size()-1);
return res;
}
};