1. 程式人生 > >劍指offer——陣列中的逆序對

劍指offer——陣列中的逆序對

本題在牛客上用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]

……

直到遍歷到最後一個元素。