刷題 陣列中的逆序對

2021-10-21 20:13:53 字數 1380 閱讀 8284

題目:在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007

對於50

%50\%

50%的資料,siz

e≤10

4size\leq 10^4

size≤1

04對於75

%75\%

75%的資料,siz

e≤10

5size\leq 10^5

size≤1

05對於100

%100\%

100%

的資料,siz

e≤2∗

10

5size\leq 2*10^5

size≤2

∗105

示例:輸入:[1,2,3,4,5,6,7,0]

輸出:7

思路:採用歸併排序,更具歸併排序調整的次序,算得需要逆序數對的個數。

code:

# -*- coding:utf-8 -*-

class solution:

def __init__(self):

self.count = 0

def inversepairs(self, data):

# write code here

if len(data) == 0:

return 0

self.merge_sort(data)

return self.count%1000000007

def merge_sort(self, array):

if len(array)<2:

return array

mid = int(len(array)/2)

low = 0

high = len(array)-1

return self.sort(self.merge_sort(array[low:mid]), self.merge_sort(array[mid:]))

def sort(self, left, right):

res =

# import pdb;pdb.set_trace()

while left and right:

if left[0] > right[0]:

self.count += len(left)

right.pop(0)

else:

left.pop(0)

while left:

left.pop(0)

while right:

right.pop(0)

return res

刷題 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007。用類似歸併排序的思路。coding utf 8 class solution definverse...

51題陣列中的逆序對

題目描述 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 思路 使用了歸併排序的思想 class solution else if m start...

程式設計題 陣列中的逆序對

題目鏈結 題目描述在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 輸入描述 題目保證輸入的陣列中沒有的相同的數字資料範圍 對於 50的資料,siz...