【題目描述】
Construct minimum number by reordering a given non-negative integer array. Arrange them such that they form the minimum number.
Notice:The result may be very large, so you need to return a string instead of an integer.
給定一個整數(shù)數(shù)組固歪,請將其重新排序碍讯,以構(gòu)造最小值。
【注】:結(jié)果可能非常大骏全,因此你需要返回一個字符串而不是一個整數(shù)局嘁。
【題目鏈接】
www.lintcode.com/en/problem/reorder-array-to-construct-the-minimum-number/
【題目解析】
這道題關(guān)鍵在于字符串兩兩之間的大小比較以及排序算法荤西。
這里排序算法用Java底層用歸并實現(xiàn)的Arrays.sort,能將排序的時間復雜度控制在O(n*lnon)筝野。
對于字符串的兩兩比較嫌松,按照我們這道題的思路,我們需要比較的是兩兩字符串s1,s2拼接是s1拼s2還是s2拼s1大邑蒋,根據(jù)這句話,我們就可以直接通過比較s1+s2和s2+s1的字符序大小來得到我們的結(jié)果按厘。
因為是要求最小的數(shù)医吊,所以可能0會出現(xiàn)在最后拼接成的字符串最前面,我們需要把前導0去掉逮京。
【參考答案】
www.jiuzhang.com/solutions/reorder-array-to-construct-the-minimum-number/