跳到主要内容

把数组排成最小的数

问题:输入一个正整数数组,把数组里所有数字拼接起来获得的数字中,取得最小的一个

思路

快速排序:

  • 先将数字进行排序
  • 对排序的的数字进行交叉比较,因为会出现 [3, 32],如果只进行简单的排序组合会得到 332 明显不是我们要得到的,323 才是正确结果

代码实现:

const findMinNumber = function (nums) {
nums.sort( (a, b) => {
const compare_s = a + '' + b
const compare_e = b + '' + a
if(compare_s > compare_e) return 1
if(compare_s < compare_e) return -1
return 0
})
return nums.join('')
}

时间复杂度是 O(NlogN), 空间复杂度是 O(1)