一文解决逆序数


一文解决逆序数

一道逆序数,四种写法,从面试到竞赛一网打尽。计算逆序数有两种思路:

  1. 归并排序:统计归并过程中「右边元素先出列」时跨过的元素数;
  2. 值域计数:按 rank 逐个把元素落位计数,当前元素的逆序贡献等于值域区间 $[rank+1, n]$ 上的计数和——需要单点修改 + 区间求和的数据结构。

leetcode 上有一道弱化的模板题,下面四份代码都以它为载体。

思路一:归并排序

面试版(切片归并)

一般来说面试写出这版就够了:

class Solution:
    def reversePairs(self, record: List[int]) -> int:
      ...

Read more