劍指offer第35題 陣列中的逆序對

2021-09-29 21:25:41 字數 1157 閱讀 9155

題目描述

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