会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
本题的算法标签是「归并排序 / 逆序对」:给定数组 priorities,统计满足 i<j 且 priorities[i] > priorities[j] 的下标对数量,也就是严格逆序对的个数。由于要求严格大于,相等的元素之间不构成逆序。
为什么不能直接双重循环。 最直观的写法是枚举所有 i<j 并逐一比较,时间复杂度 O(n2)。本题 n≤50000,最坏要比较约 1.25×109 次,在 1 秒级时限下必然超时,所以需要 O(nlogn) 的做法。
归并排序统计逆序对。 归并排序把数组分成左右两半,分别递归排序,再合并两个有序段。逆序对可以按「两个元素是否跨左右两半」分成三类:
- 两个元素都在左半:递归处理左半时统计;