public class Solution {
private int count =0;
int [] temp=new int[100005];
public void mergrSort(int [] a,int [] tem,int l,int r)
{
if(l<r)
{
int mid=l+(r-l)/2;;
// System.out.println(mid);
mergrSort(a,tem,l,mid);
mergrSort(a,tem,mid+1,r);
int l1=l,r1=mid+1,k=0;
while(l1<=mid&&r1<=r)
{
if(a[l1]<=a[r1])
{
tem[k++]=a[l1++];
}
else {
tem[k++]=a[r1++];
count+=(mid-l1+1);
count=count%1000000007;
}
}
while(l1<=mid)
tem[k++]=a[l1++];
while(r1<=r)
{
tem[k++]=a[r1++];
}
for(int i=0;i<k;++i)
a[l+i]=tem[i];
}
}
public int InversePairs(int [] array) {
int n=array.length;
if(n<=1)
return 0;
mergrSort(array,temp,0,n-1);
return count;
}
}
使用归并排序,

京公网安备 11010502036488号