劍指offer 把陣列排成最小的數(思維)

2021-09-12 12:43:23 字數 1169 閱讀 4381

(暴力搜尋) o(n

!∗n)

o(n!*n)

o(n!∗n

) 就是直接暴力搜所有排列的情況

複雜度分析:先不考慮是否有重複的情況每個位置選數就是個全排列,中規模的資料就一定超時

**省略

(貪心) o(n

2log

n)o(n^2logn)

o(n2lo

gn)

利用排序的思路將相鄰兩個數字組合,採取較小的那種組合方式進行排序,因為:如果a複雜度分析:排序複雜度o(n

logn

)o(nlogn)

o(nlog

n),每次比較位數o(n

)o(n)

o(n)

,數字轉字串o(n

)o(n)

o(n)

,綜合o(n

2log

n+n)

o(n^2logn+n)

o(n2lo

gn+n

) **

class

solution

reverse

(res.

begin()

, res.

end())

;return res;

}static

bool mycompare (string sa, string sb)

string printminnumber

(vector<

int>

& nums)

sort

(change.

begin()

, change.

end(

), mycompare)

; res.

erase

(res.

begin()

, res.

end())

;for

(unsigned

int i =

0; i < change.

size()

; i++

)return res;}}

;

劍指offer 把陣列排成最小的數

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 5 題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。解析 比大小即可,不過比的時候是從從左往右比。注意到字母長度有...

劍指offer 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 將int型的陣列轉化為string型的陣列,再將string型的陣列排序,排序規則依據比較兩個string變數相加後的大小 注意這個cmp...

劍指offer 把陣列排成最小的數

題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 題目要求比較整數陣列組成後的數的大小,在int及long中來處理很容易超出範圍,實際上大數問題一般放在字串中來處理。我們把陣列元素兩...