题目:
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
思路:
归并排序思想
代码:
class Solution:
def InversePairs(self, data):
def merge(left, right):
res = []
while left and right:
if left[0] > right[0]:
global count
count += len(left)
res.append(right.pop(0))
elif left[0] <= right[0]:
res.append(left.pop(0))
while left:
res.append(left.pop(0))
while right:
res.append(right.pop(0))
return res
def mergesort(arr):
if len(arr) < 2:
return arr
mid = len(arr)//2
left = arr[:mid]
right = arr[mid:]
res = merge(mergesort(left), mergesort(right))
return res
global count
count = 0
mergesort(data)
return count%1000000007