35 陣列中的逆序對

2021-08-15 13:43:34 字數 806 閱讀 7553

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

輸入描述:

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

資料範圍:

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

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

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

思路:歸併排序的改進,把資料分成前後兩個陣列(遞迴分到每個陣列僅有乙個資料項),合併陣列,合併時,出現前面的陣列值array[i]大於後面陣列值array[j]時;則前面陣列array[i]~array[mid]都是大於array[j]的,count += mid+1 - i。由於測試用例輸出結果比較大,對每次返回的count mod(1000000007)求餘

public

int inversepairs(int array)

private

int inversepairscore(int array,int copy,int low,int high)

else

copy[loccopy--] = array[j--];

}for(;i>=low;i--)

for(;j>mid;j--)

for(int s=low;s<=high;s++)

return (leftcount+rightcount+count)%1000000007;

}

35 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 順序掃瞄整個陣列,每掃瞄到乙個數字的時候,逐個比較該數字和它後面的數字的大小。如果後面的數字比它小...

35 陣列中的逆序對

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

陣列中的逆序對(第35題)

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