刷題 陣列中的逆序對

2021-08-20 05:36:57 字數 1413 閱讀 8128

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數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...