面試題45:把陣列排成最小的數
題目:輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這3個數字能排成的最小數字321323。
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int g_maxnumberlength=10;
char
* g_strcombine1=
newchar
[g_maxnumberlength*2+
1];char
* g_strcombine2=
newchar
[g_maxnumberlength*2+
1];int
compare
(const
void
* strnumber1,
const
void
* strnumber2)
void
printminnumber
(int
* numbers,
int length)
qsort
(strnumbers, length,
sizeof
(char*)
, compare)
;for
(int i=
0; i)printf
("\n");
for(
int i=
0; i)delete
strnumbers;
}int
main()
;printminnumber
(number,3)
;return0;
}
劍指offer 面試題45 把陣列排成最小的數
面試題 劍指offer 題目解答 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323 首先我們能想到最直接的辦法就是對給出的數字進行全排列,然後依次比較,選出最小的數。但是時間複雜度太大,不會通過...
劍指 面試題45 把陣列排成最小的數
題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。0 nums.length 100 思路 1 自定義排序規則comp 然後呼叫內建排序函式。2 將int轉換成字串,再執行字串拼接操作,最後比較它們只用根據字串大小的比較規則比較即可,因為ab和ba位數...
《劍指offer》陣列相關面試題
在乙個長度為n的陣列裡所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複,也不知道重複了幾次,請找出陣列中任意乙個重複的數字。例如,長度為7的陣列,那麼對應的輸出應該是重複的數字2或者3.思路 重排這個陣列,從頭到尾依次掃瞄這個陣列中的每個數字。掃到下標為i的數字m時 首先...