在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007。
用類似歸併排序的思路。
# -*- coding:utf-8 -*-
class
solution:
definversepairscore
(self, data, copy, start, end):
if start == end:
copy[start] = data[start]
return
0 length = int((end - start) / 2)
left = self.inversepairscore(copy, data, start, start + length)
right = self.inversepairscore(copy, data, start + length + 1, end)
i = start + length
j = end
copy_index = end
counter = 0
while (i >= start) and (j >= start + length + 1):
if data[i] > data[j]:
counter += j - start - length
copy[copy_index] = data[i]
copy_index -= 1
i -= 1
else:
copy[copy_index] = data[j]
copy_index -= 1
j -= 1
while i >= start:
copy[copy_index] = data[i]
copy_index -= 1
i -= 1
while j >= start + length + 1:
copy[copy_index] = data[j]
copy_index -= 1
j -= 1
return (left + right + counter) % 1000000007
definversepairs
(self, data):
# write code here
if data:
copy = [item for item in data]
return self.inversepairscore(data, copy, 0, len(data) - 1)
else:
return
0
這道題牛客不知道是不是抽風了,python永遠報超時… 刷題 陣列中的逆序對
題目 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 對於50 50 50 的資料,siz e 10 4size leq 10 4 size 1 ...
51題陣列中的逆序對
題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 思路 使用了歸併排序的思想 class solution else if m start...
程式設計題 陣列中的逆序對
題目鏈結 題目描述在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 輸入描述 題目保證輸入的陣列中沒有的相同的數字資料範圍 對於 50的資料,siz...