劍指Offer 51 陣列中的逆序對

2021-10-24 01:40:54 字數 1270 閱讀 6826

力扣

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

示例 1:

輸入: [7,5,6,4]

輸出: 5

兩區間及跨區間

class

solution

// 歸併排序

private

static

intmergesort

(int

array,

int left,

int right,

int[

] temp)

// 跨區間排序

private

static

intmergecrosssort

(int

array,

int left,

int mid,

int right,

int[

] temp)

// 邊界的起始位置

int i = left;

int j = mid +1;

for(

int k = left; k <= right; k++

)else

if(j == right +1)

else

if(temp[i]

<= temp[j]

)else

}return count;

}}

nowcoder

private

long cnt =0;

private

int[

] tmp;

// 在這裡宣告輔助陣列,而不是在 merge() 遞迴函式中宣告

public

intinversepairs

(int

nums)

private

void

mergesort

(int

nums,

int l,

int h)

private

void

merge

(int

nums,

int l,

int m,

int h)

k++;}

for(k = l; k <= h; k++

) nums[k]

= tmp[k]

;}

劍指Offer 51 陣列中的逆序對

在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。樣例輸入 1,2,3,4,5,6,0 輸出 6 class solution object definversepairs self,nums type nums list in...

劍指offer 51 陣列中的逆序對

這到題的題目為 陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這兩個陣列中逆序對的總數。解題思路 將陣列分為若干個子陣列,其中每乙個數為乙個子陣列,先統計子陣列內部之間的逆序對,並對它們進行排序。然後統計相鄰兩個子陣列之間的逆序對用於對它們進行排序,直...

劍指offer51 陣列中的逆序對

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