一、Problem
在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數。
輸入: [7,5,6,4]
輸出: 5
限制:
0 <= 數組長度 <= 50000
二、Solution
方法一:暴力(超時)
總運算量 ,能不超時?
public int reversePairs(int[] nums) {
Set<int[]> set = new HashSet<>();
for (int i = 0; i < nums.length; i++)
for (int j = i+1; j < nums.length; j++) {
if (nums[i] > nums[j]) {
int[] a = new int[]{nums[i], nums[j]};
if (!set.contains(a))
set.add(a);
}
}
return set.size();
}
複雜度分析
- 時間複雜度:,
- 空間複雜度:,
方法二:
複雜度分析
- 時間複雜度:,
- 空間複雜度:,