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进行模 非要在第一个里面进行% 要不然 倒数第二个用例过不了 。。。