public class Solution {
public int InversePairs(int [] array) {
//归并排序 。
if(array.length==0){
return 0;
}
return mergeSort(array,0,array.length-1)%1000000007;
}
public int merge(int[] array,int left,int mid,int right){
int start = left;
int mm = mid+1;
int[] tmp = new int[right-left+1];
int index = 0;
int count =0;
while(start <= mid && mm<= right){
if(array[start] <= array[mm]){
tmp[index++] = array[start++];
}else{
count += (mid-start+1);
tmp[index++] = array[mm++];
}
}
while(start<=mid){
tmp[index++] = array[start++];
}
while(mm <= right){
tmp[index++] = array[mm++];
}
index=0;
for(int i= left;i<=right;i++){
array[i] = tmp[index++];
}
return count % 1000000007;
}
public int mergeSort(int[] array,int left,int right){
if(left>=right){
return 0;
}
int mid = (left+right)>>1;
int leftSum = mergeSort(array,left,mid);
int rightSum = mergeSort(array,mid+1,right);
return (leftSum + rightSum + merge(array,left,mid,right));
}
}为什么不能在mergeSort最后return进行模 非要在第一个里面进行% 要不然 倒数第二个用例过不了 。。。

京公网安备 11010502036488号