劍指offer——陣列中的逆序對
阿新 • • 發佈:2018-12-14
本題在牛客上用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]
……
直到遍歷到最後一個元素。