在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
示例 1:
输入: [7,5,6,4]
输出: 5
限制:
0 <= 数组长度 <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof
自己写的代码,只要它给的数组不要太大,我还是可以的,一旦大了,时间就超过限制了。
class Solution {
public int reversePairs(int[] nums) {
int count = 0;
int q = 0;
int p = 1;
while(p < nums.length){
if(nums[q] > nums[p]){
count++;
p++;
}else{
p++;
}
if(p == nums.length){
q++;
p = q + 1;
}
}
return count;
}
}
--------------------for循环的写法(也是时间限制)------------------
class Solution {
public int reversePairs(int[] nums) {
int count = 0;
for(int i = 0; i < nums.length-1; i++){
for(int j = i+1; j < nums.length;j++){
if(nums[i] > nums[j]){
count++;
}
}
}
return count;
}
}