写个题解。python版的归并排序,中间加一行:self.p += len(l1) - i。这样就行喽
# -*- coding:utf-8 -*- class Solution: def InversePairs(self, data): # write code here self.p = 0 self.divide(data) return self.p % 1000000007 def divide(self, data): if len(data) <= 1: return data mid = len(data) // 2 left = self.divide(data[:mid]) right = self.divide(data[mid:]) return self.merge(left, right) def merge(self, l1, l2): l3 = list() i, j = 0, 0 while i < len(l1) and j < len(l2): if l1[i] < l2[j]: l3.append(l1[i]) i += 1 else: self.p += len(l1) - i l3.append(l2[j]) j += 1 l3.extend(l1[i:] if i < len(l1) else l2[j:]) return l3