# 剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例1
输入: [10,2]
输出: "102"
示例2
输入: [3,30,34,5,9]
输出: "3033459"
排序
实际上是用自定义的排序方法将数组进行排序。
拼接字符串x+y < y+x, 那么x应该排在y前面。
至于这个的原因,实在很复杂,可以点击这里 (opens new window)查看
/**
* @param {number[]} nums
* @return {string}
*/
var minNumber = function(nums) {
return nums.sort((a,b)=>{ return (`${a}${b}` - `${b}${a}`)}).join('');
};
这个可以吗??
var minNumber = function (nums) {
const arr = nums.sort((a, b) => +a - +b)
if (+arr[0] === 0) {
let i = 1;
while (i < arr.length && arr[i] == 0) {
i++;
}
arr[0] = arr[i];
arr[i] = '0';
}
return arr.join('')
};
console.log('min:', minNumber([3, 30, 34, 5, 9]));