面試題51 陣列中的逆序對 leecode

2021-10-02 21:08:50 字數 580 閱讀 4133

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。

題目鏈結

運用樹狀陣列解決問題。為了讓資料的表示範圍合理,還要進行離散化。

這道題最坑的地方在於有可能陣列中有重複的數字,例如[1,3,2,1,2],所以一定要去重,然後再離散化。根據離散化後的下標的順序來插入樹狀陣列,重新統計結果。

class

solution

intquery

(int tar,vector<

int>

&c)return ans;

}void

update

(int tar,

int l,vector<

int>

&c)}

intreversepairs

(vector<

int>

& nums)

//更新

for(

int i =

1;i <= l;i++

)return ans;}}

;

面試題51 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。例如在陣列中,一共存在5個逆序對,分別是 7,6 7,5 7,4 6,4 5,4 看到這道題目,第一反應是順序掃瞄整個陣列,沒掃瞄到乙個數字,逐個比較該數字和它後面數字的大小,...

面試題51 陣列中的逆序對

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

面試題51 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 輸入 7 5,6 4 輸出 5先說自己想法 暴力法先來一遍,嗯 超時了!不知所措的我開啟了題解,前面又是一片光明!就是在歸併排序的基礎上新增了乙個計數變數,當合併兩個子陣...