来源:LeetCode
知识点:排序、二分查找、分治、树状数组、线段树
思路:
官方题解
归并排序,每次算左边和右边比满足条件的翻转对
class Solution {
public int reversePairs(int[] nums) {
return mergeAndCount(nums,0,nums.length-1);
}
public int mergeAndCount(int[] nums,int start,int end) {
int cnt = 0;
if(start<end) {
int mid = (start+end)/2;
cnt += mergeAndCount(nums,start,mid);
cnt += mergeAndCount(nums,mid+1,end);
int j=mid+1;
int last = 0;
for(int i=start;i<=mid;i++) {
for(int k=j