劍指offer系列 陣列中的逆序對

2021-10-23 06:08:29 字數 1264 閱讀 2801

最近一直在家刷面經,因為疫情也出不去。所以沒事就會在知乎回答別人提出的問題,還有就是刷題。最近leetcode授權了劍指offer的題,然後就當作我是複習吧。目前還在刷,今晚吃飽刷到這道歸併排序的高階題目——陣列中的逆序對,所以寫一篇關於它的題解吧。

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

例項

輸入:[7,

5,6,

4]輸出:5

限制:0<=陣列長度<=50000

其實這道題的本質就是歸併排序,如果對歸併排序不熟悉的話,請先看這篇文章:神級基礎排序——歸併排序

這個時候就當你會了歸併排序了。當進行合併操作的時候,如果nums[p1]>nums[p2]的話,那麼這個時候就組成逆序對。然後就是nums[p1]~nums[mid]都大於nums[p2],所以此時的逆序對數就是mid-p1+1

package leetcode;

/** * @author god-jiang

* @date 2020/2/16 19:49

*/public

class

reversepairs

//歸併排序

public

void

mergesort

(int

nums,

int start,

int end)

}public

void

merge

(int

nums,

int start,

int mid,

int end)

else

}while

(p1 <= mid)

while

(p2 <= end)

for(

int i =

0; i < temp.length; i++)}

}

劍指offer系列 陣列中逆序對

題目描述 輸入乙個陣列,求出其中逆序對的總個數 示例 輸入 逆序對有,幾種情況 因此輸出5 分析 利用歸併排序的思想進行排序,時間複雜度o nlgn int inversepairscore vector nums,vector copy,int begin,int end int mid begi...

劍指Offer系列51 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 python 思路 利用陣列部分有序,採用歸併排序思想 輔助度 o nlogn class solut...

劍指offer系列28 陣列中的逆序對

這個題我拿到沒什麼好的思路,除了乙個個求的方法之外想不出效率更高的方法。這個題看劍指offer的意思是按照歸併排序的方法做的,順便複習一下歸併排序 看到這個題只要能想到用歸併排序的方法做就已經成功了一半了,其次就是一些細節問題。寫 你又思路,又會將思路用 寫出來才可以。只有思路不會寫 也不行。寫 的...