链接: link
class Solution {
int[] tmp;
public int reversePairs(int[] record) {
tmp = new int[record.length];
return mergeSort(record,0,record.length-1);
}
private int mergeSort(int[] record, int left, int right){
if(left >= right) return 0;
int ret = 0;
int mid = (right + left) / 2;
int cur1 = left, cur2 = mid+1, i = 0;
//左半部分的个数 + 排序,右半部分的个数 + 排序
ret += mergeSort(record,left, mid);
ret += mergeSort(record, mid+1, right);
//一左一右的个位数 + 排序
while(cur1 <= mid && cur2 <= right){
if(record[cur1] <= record[cur2]){
tmp[i++] = record[cur1++];//排序
} else {
ret += mid - cur1 + 1;
tmp[i++] = record[cur2++];//排序
}
}
while(cur1 <= mid) tmp[i++] = record[cur1++];
while(cur2 <= right) tmp[i++] = record[cur2++];
for(int j = left; j <= right; j++){
record[j] = tmp[j-left];
}
return ret;
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有