題目描述
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007
輸入描述:
題目保證輸入的陣列中沒有的相同的數字
資料範圍:
對於%50的資料,size<=10^4
對於%75的資料,size<=10^5
對於%100的資料,size<=2*10^5
思路:類似於歸併排序,在排序過程中統計逆序對的個數。
public
class
solution
int count=
inversepairscore
(array,copy,
0,len-1)
;return count;
}private
intinversepairscore
(int
array,
int[
] copy,
int low,
int high)
int mid=
(low+high)/2
;int leftcount=
inversepairscore
(array,copy,low,mid)
%1000000007
;int rightcount=
inversepairscore
(array,copy,mid+
1,high)
%1000000007
;int count=0;
int i=mid;
int j=high;
int copyhigh=high;
while
(i>=low&&j>mid)
}else
}for
(;i>=low;i--
)for
(;j>mid;j--
)for
(int z=low;z<=high;z++
)return
(count+leftcount+rightcount)
%1000000007;}
}
牛客網劍指offer第35題 陣列中的逆序對
題目 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 剛看到這個題目的時候,我的第一直覺是,不能對陣列排序,因為排序打亂了數字的相對順序,無法求解...
劍指offer 面試35題
面試35題 題目 複雜鍊錶的複製 題 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路一 python作弊法 解題 coding ...
劍指offer第50題 陣列中重複的數字
原始碼在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。class solution return false boo...