题目描述
方法:
归并排序的同时,逆序对数量
class Solution:
def reversePairs(self, nums: List[int]) -> int:
self.res = 0
def merge_sort(l,r):
i = j = 0
m, n = len(l), len(r)
new = []
while i < m and j < n:
if l[i] > r[j]:
self.res += m - i
new.append(r[j])
j += 1
else:
# self.res += n - j
new.append(l[i])
i += 1
new += l[i:] + r[j:]
return new
def merge(arr):
if len(arr)<=1:
return arr
mid = len(arr)//2
left = merge(arr[:mid])
right = merge(arr[mid:])
return merge_sort(left,right)
tmp = merge(nums)
return self.res