跳转至

51.数组中的逆序对 (Hard)*

题目描述*

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。

限制*

0 <= n <= 50000

思路 & daim*

最简单的方法就是暴力枚举所有数对判断是否逆序。

还可以利用归并排序的过程计算逆序对,归并排序合并左右两部分的时候如果 nums[l] <= nums[r] 那么说明 nums[l] > nums[r - 1]... 所以此时可以将逆序对数 + r - mid - 1,同时在最后如果左侧数组有剩余部分,每个也都要加这个值。


最后更新: July 23, 2022