51.数组中的逆序对 (Hard)*
题目描述*
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
限制*
0 <= n <= 50000
思路 & daim*
最简单的方法就是暴力枚举所有数对判断是否逆序。
还可以利用归并排序的过程计算逆序对,归并排序合并左右两部分的时候如果 nums[l] <= nums[r] 那么说明 nums[l] > nums[r - 1]... 所以此时可以将逆序对数 + r - mid - 1,同时在最后如果左侧数组有剩余部分,每个也都要加这个值。
最后更新: July 23, 2022