题目描述
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
样例描述
示例 1:
输入: [7,5,6,4]
输出: 5
思路
归并排序 + 分治思想
- 在归并排序的过程中统计逆序对的数量,如下是递归排序的过程
- 总共的逆序对数量等于 左边的逆序对 + 右边的逆序对 + 左右结合的时候形成的逆序对
在两边都排好序后,左边某个值如果大于右边,则该值一直到左边端点都会大于右边这个值 - 先进行左右两边的统计,在统计中间
- 递归排序要借助辅助数组
代码
class Solution {
public int reversePairs(int[] nums) {
if (nums.length <= 1) return