一、题目内容
二、题解
解法1:
思路
count+=mid+1-i;
count%=1000000007;
代码
public class Solution {int count = 0;public int InversePairs(int [] array) {if(array.length<2){return 0;}mergeSort(array,0,array.length-1);return count;}private void mergeSort(int[] array,int left,int right){int mid = left+(right-left)/2;if(left<right){// 左子数组mergeSort(array,left,mid);// 右子数组mergeSort(array,mid+1,right);merge(array,left,mid,right);}}private void merge(int[] array,int left,int mid,int right){int[] arr = new int[right-left+1];int arrIdx = 0;int i = left,j = mid+1;while(i<=mid&&j<=right){if(array[i]<=array[j]){arr[arrIdx++] = array[i++];}else{arr[arrIdx++] = array[j++];count+=mid+1-i;count%=1000000007;}}while(i<=mid){arr[arrIdx++] = array[i++];}while(j<=right){arr[arrIdx++] = array[j++];}for(int num:arr){array[left++] = num;}}}
