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