我必须检查每个元素是否有大于数组中任何元素的元素。这意味着数组必须按降序排序。如果存在大于当前元素的任何元素,那么我已经对数字进行了计数,就像数组中存在的大于我要检查的当前元素的数字一样。这样,我必须检查每个元素。我的输出必须是一个元素大于当前元素的总次数(考虑数组中的每个元素)。
问题是我必须在O(n logn)中进行操作。我可以天真地做,但是运行时间是O(n ^ 2)。
public class CountPairs {
public static int countPairs(int[] arr) {
int Pairs=0;
for (int i=0;i<arr.length;i++){
for (int j=i+1;j<arr.length;j++){
if (arr[i] < arr[j]){
Pairs++;
}
}
}
return Pairs;
}
}
例如: System.out.println(countPairs({3,1,4,2})应该返回3。 请帮我解决这个问题。