题解 | #数组中的逆序对#
数组中的逆序对
https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int mod = 1000000007;
public int merge(int first, int end, int[] nums, int[] arr){
if(first >= end){
return 0;
}
int mid = first + ((end - first)>>1);
int res = merge(first,mid,nums,arr) + merge(mid+1,end,nums,arr);
res %= mod;
int i = first, j = mid + 1;
for(int k = first; k <= end; k++){
arr[k] = nums[k];
}
for(int k = first; k <= end; k++){
if(i == mid + 1){
nums[k] = arr[j++];
}else if(j == end + 1 || arr[i] <= arr[j]){
nums[k] = arr[i++];
}else{
nums[k] = arr[j++];
res += mid - i + 1;
}
}
return res%mod;
}
public int InversePairs (int[] nums) {
// write code here
int n = nums.length;
int[] arr = new int[n];
return merge(0,n-1,nums,arr);
}
}
