劍指Offer 35 陣列中的逆序對

2022-08-19 16:24:11 字數 1018 閱讀 4022

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

輸入描述:

題目保證輸入的陣列中沒有的相同的數字

資料範圍:

對於%50的資料,size<=10^4

對於%75的資料,size<=10^5

對於%100的資料,size<=2*10^5

輸入例子:
1,2,3,4,5,6,7,0
輸出例子:
7
利用歸併排序的思想,每次排序相鄰兩段的資料並統計逆序,相對於前後的資料段之間沒有相對資料沒有改變。

public class solution 

return mergercount(array, copy, 0, array.length-1);

}private int mergercount(int array, int copy, int start, int end)

int mid = (start + end) / 2;

int c1 = mergercount(copy, array, start, mid);

int c2 = mergercount(copy, array, mid + 1, end);

int count = 0;

int l = mid;

int r = end;

int index = end;

while (r > mid && l >= start)else

}while (r > mid) copy[index--] = array[r--];

while (l >= start) copy[index--] = array[l--];

return (count + c1 + c2) % 1000000007;

}}

劍指offer35 陣列中的逆序對

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

劍指Offer(35) 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007。例如輸入,輸出5對。分治思想,採用歸併排序的思路來處理。在合併兩個有序序列時,同時計算逆序對數。對...

劍指Offer 35 陣列中的逆序對

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