在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。給你乙個陣列,求出這個陣列中逆序對的總數。
概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 構成乙個逆序對。
樣例 序列 [2, 4, 1, 3, 5] 中,有 3 個逆序對 (2, 1), (4, 1), (4, 3),則返回 3 。
思路:最簡單的想法,掃瞄整個陣列,時間複雜度o(n^2),後續改進
#coding:utf-8
defget_nixudui
(a):
count = 0
arr =
for i in range(len(a)):
for j in range(i+1,len(a)):
if a[i] > a[j]:
count += 1
return arr
print(get_nixudui([7,5,6,4]))
求陣列逆序對
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 題目保證輸入的陣列中沒有的相同的數字 資料範圍 對於 50的資料,size 10 4 對於 75的...
求陣列逆序對
思路 類似歸併排序演算法,在合併已經有序的相鄰子陣列的時候,計算前面陣列相對於後面陣列的逆序對數,整個遞迴過程可以算出所有逆序對 include void merge int a,int front,int middle,int end,int count else if j end while j...
微軟100題 求陣列中的逆序對
求陣列中的逆序對的個數 在陣列a中如果a i a j 且i稱為乙個逆序數對,例如陣列是7,5 6 4 則逆序對共有 7,5 7,6 7,4 5,4 6,4 五個逆序對,剛開始的時候沒有思路,看了看解答之後發現,還是採用分治的思想,類似於用歸併演算法實現,空間複雜度為n,需要乙個額外的陣列來儲存,時間...