劍指Offer之面試題36 陣列中的逆序對

2021-07-25 21:23:41 字數 1316 閱讀 8030

所有**均通過g++編譯器

測試,僅為練手紀錄。 //

面試題36:

陣列中的逆序對

//題目:在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。

//    

輸入乙個陣列,求出這個陣列中的逆序對的總數。

//面試題36:陣列中的逆序對

//題目:在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。

// 輸入乙個陣列,求出這個陣列中的逆序對的總數。

int countinversepairimpl(int *pnum,int *ptemp,int nbeg,int nend)

int nmid = nbeg + (nend - nbeg)/2;

int nleftcount = countinversepairimpl(ptemp, pnum, nbeg, nmid);

int nrightcount = countinversepairimpl(ptemp, pnum, nmid+1, nend);

int npos = nend;

int nendleft = nmid;

int nendright = nend;

int ncurcount = 0;

while (nendleft >= nbeg && nendright >= nmid+1)

else

}while (nendleft >= nbeg)

while (nendright >= nmid+1)

return (nleftcount + nrightcount + ncurcount);

}int countinversepair(int *pnum,int nsize)

int *temp = new int[nsize];

if(null == temp)

memcpy(temp,pnum,nsize);

int ncount = countinversepairimpl(pnum,temp,0,nsize-1);

delete temp;

return ncount;

}void testcountinversepair()

; int nnumsize = sizeof(arrnum)/sizeof(int);

loginfo("countinversepair : %d",countinversepair(arrnum,nnumsize));

}

zhaipillary

2017-01-07

劍指Offer之面試題33 把陣列排成最小的數

所有 均通過g 編譯器 測試,僅為練手紀錄。面試題33 把陣列排成最小的數 題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出所有數字中最小的乙個。例如輸入陣列 3,32,321 則列印出這 3個數字能排成的最小數字 321323.面試題33 把陣列排成最小的數 題目 輸入乙...

劍指offer之面試題9 4 矩形覆蓋

題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 用數學歸納的思想分析,得出規律。牛客網提交 public class solution if target 2 return init target int...

劍指offer 面試題36 陣列中的逆序對

題目 在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。例如在陣列中一共存在5對逆序對,分別是 7,6 7,5 7,4 6,4 5,4 基本思想 解法一 o n 2 最簡單的想法就是遍歷每乙個元素,讓其與後面的元素對比,如果大於...