所有**均通過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 最簡單的想法就是遍歷每乙個元素,讓其與後面的元素對比,如果大於...