【题目描述】
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.
给定一个整数数组,请将其重新排序,以构造最小值。
【注】:结果可能非常大,因此你需要返回一个字符串而不是一个整数。
【题目链接】
www.lintcode.com/en/problem/reorder-array-to-construct-the-minimum-number/
【题目解析】
这道题关键在于字符串两两之间的大小比较以及排序算法。
这里排序算法用Java底层用归并实现的Arrays.sort,能将排序的时间复杂度控制在O(n*lnon)。
对于字符串的两两比较,按照我们这道题的思路,我们需要比较的是两两字符串s1,s2拼接是s1拼s2还是s2拼s1大,根据这句话,我们就可以直接通过比较s1+s2和s2+s1的字符序大小来得到我们的结果。
因为是要求最小的数,所以可能0会出现在最后拼接成的字符串最前面,我们需要把前导0去掉。
【参考答案】
www.jiuzhang.com/solutions/reorder-array-to-construct-the-minimum-number/