本题在牛客上用python编程是无法顺利通过,参考多种方法仍然无效。下面一种方法,感觉还是很优秀的,不过通过率50%
class Solution():
def InversePairs(self,data):
count=0
datasorted=[]
for i in data:
datasorted.append(i)
datasorted.sort()
for i in range(len(datasorted)):
count+=data.index(datasoted[i])
data.remove(datasorted[i])
return count%1000000007
解释:
例如:输入数组:data=[3,2,1,5,4,6,0,7]
排序好数组:dataSorted=[0,1,2,3,4,5,6,7]
顺序遍历dataSorted数组,第一个元素0是最小的元素,因此在data数组中,0前面有多少个数,就有多少个逆序对。在0检测完之后,将0从data数组中删除,data=[3,2,1,5,4,6,7],dataSorted数组遍历到1,而1其实就是[1,2,3,4,5,6,7]中的最小元素
因此,原问题就变为子问题:
输入数组:data=[3,2,1,5,4,6,7]
排序好数组:dataSorted=[1,2,3,4,5,6,7]
……
直到遍历到最后一个元素。