面試題33 把陣列排成最小的數

2021-06-16 16:51:07 字數 503 閱讀 3017

題目:輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數。列印能拼接處的所有數字鐘最小的乙個。例如輸入陣列,則列印出這3個數字能排成的最兇啊數字321323.

思路:1,傳統:陣列全排列,再排序

2,定義排序規則,將整數轉化成字元陣列,兩個字元陣列比較大小的比較函式要重新定義,(a+b)與(b+a)的大小確定先後順序。由小到大

最後依次輸出各個字元陣列。

struct compare

};

//函式功能 : 把陣列排成最小的數

//函式引數 : parray為陣列,num為陣列元素個數

//返回值 : 無

void comarraymin(int *parray, int num)

sort(pstrarray, pstrarray + num, compare()); //字串陣列排序

for(i = 0; i < num; i++) //列印字串陣列

cout<

面試題33 把陣列排成最小的數

問題描述 輸入乙個正整數陣列,將它們連線起來排成乙個數,輸出能排出的所有數字中最小的乙個。例如輸入陣列,則輸出這兩個能排成的最小數字32132。請給出解決問題的演算法,並證明該演算法。思路 先將整數陣列轉為字串陣列,然後字串陣列進行排序,最後依次輸出字串陣列即可。這裡注意的是字串的比較函式需要重新定...

面試題37 把陣列排成最小的數

題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。邊界條件及異常 陣列為空 思路 這題可以需要建立對任意兩個數自己的比較規則。然後根據這個規則進行排序即可。如果是單位數,顯然小的在前。如果是32和321,結合後有32321和32132兩種結果,比較這兩...

面試題 把陣列排成最小的數(C )

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則打出這3個數字能排成的最小數字321323。這個題目最直接的做法應該是先求出這個陣列中所有數字的全排列,然後把每個排列拼起來,最後求出拼起來的數字的最大值,這裡不過多敘述。根據排列組合的知識,...