一、题目地址
https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/
二、具体代码
1、采用内置函数sort
/**
* @param {number[]} nums
* @return {string}
*/
// 时间复杂度: O(NlogN)
// 空间复杂度: O(N)
var minNumber = function(nums) {
// 升序排列
return nums.sort((a, b) => `${a}${b}` - `${b}${a}`).join('');
};
let res = minNumber([1,3,2]);
console.log(res);
2、采用快排
/**
* @param {number[]} nums
* @return {string}
*/
// 时间复杂度: O(NlogN)
// 空间复杂度: O(N)
var minNumber = function(nums) {
quickSort(nums, 0, nums.length - 1);
return nums.join('');
};
function quickSort(nums, left, right) {
if(left >= right) {
return;
}
let i = left, j = right;
let temp = nums[i];
// 核心代码部分
while(i < j) {
while((`${nums[j]}${nums[left]}` - `${nums[left]}${nums[j]}`) >= 0 && i < j) {
j--;
}
while((`${nums[i]}${nums[left]}` - `${nums[left]}${nums[i]}`) <= 0 && i < j) {
i++;
}
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
nums[i] = nums[left];
nums[left] = temp;
quickSort(nums, left, i-1);
quickSort(nums, i + 1, right);
}
三、补充链接
四、补充部分
关注公众号:【深漂程序员小庄】:
内含丰富的学习资源和面试经验(不限前端、java),还有学习交流群可加,并且还有各大厂大佬可一起交流学习,一起进步~添加小庄微信,回复【加群】,可加入互联网技术交流群: