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

2021-10-03 03:08:01 字數 985 閱讀 8319

面試題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時 首先...