给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。
你需要返回给定数组中的重要翻转对的数量。
https://leetcode.cn/problems/reverse-pairs/description
使用左闭右开的归并排序/使用线段树(暂未实现)
第一步,使用归并排序的模板对数组进行排序,注意,这里的排序要使用一个和原数组长度相同的sortedNums进行存储排序的内容,否则很容易超时(在这卡了很久)
第二步,在递归操作和合并排序子数组之间,遍历左子数组和右子数组,计算两个已经排序的子数组的重要翻转对数量,并加到最终结果中result
第三步,排序后,返回result即可
Python代码
归并排序的时间复杂度是O(nlogn),但是可能比树状数组的性能要差一丢丢