題目:
輸入乙個正整數陣列,把陣列裡面的所有數字連線起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印這三個數字能排成的最小數字321323。
基本思想:o(nlogn)
兩個數字m和n能拼接數字mn和nm。如果mn
如對321和32,排序為32132<32321,所以321<32(這個小於號並非是比較兩個數的實際大小)。
#include using namespace std;
const int g_maxnumberlength=10;
char* g_strcombine1=new char[g_maxnumberlength*2+1];
char* g_strcombine2=new char[g_maxnumberlength*2+1];
int compare(const void* strnumber1, const void* strnumber2) //對兩個數進行比較,ab和ba的大小
劍指Offer 面試題33 把陣列排成最小的數
把陣列排成最小的數 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接處的所有數字中的最小的乙個。例如 輸入陣列,則列印出這3個數字能排成的最小數字321323 思路 我們應該對於給出的兩個數字m和n,需要確定規則m和n哪個應該排序在前面,而不是比誰大誰小。m和n能拼成mn或者nm,...
劍指Offer之面試題33 把陣列排成最小的數
所有 均通過g 編譯器 測試,僅為練手紀錄。面試題33 把陣列排成最小的數 題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出所有數字中最小的乙個。例如輸入陣列 3,32,321 則列印出這 3個數字能排成的最小數字 321323.面試題33 把陣列排成最小的數 題目 輸入乙...
j劍指offer面試題 33 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路 可以求出這個陣列中所有數字的全排列,然後把每個排列拼起來,最後求出拼起來的數字的最小值。根絕陣列排列組合的思想,n個數字總共有n!個排列。...