问题描述
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例 1:
输入: [10,2]
输出: "102"
示例 2:
输入: [3,30,34,5,9]
输出: "3033459"
限制:
0 < nums.length <= 100- 输出结果可能非常大,所以你需要返回一个字符串而不是整数
- 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>把数组排成最小的数</title>
</head>
<body>
</body>
<script>
/**
* @param {number[]} nums
* @return {string}
*/
var minNumber = function(nums) {
n= nums.length
if( n <=1){
return nums[0].toString()
}
for(i=0;i<n;i++){
nums[i] = nums[i].toString()
}
var QuietSort = function (arr,L,R) {
if (L>=R){
return ;
}
var left = L,
right=R
priovt = arr[left]
while (left < right){
//依据字符串加减原则,可以直接比较 3+34 和 34+3的大小
while(left < right && (priovt + arr[right]) <= (arr[right] + priovt)){
right --
}
if(left < right){
arr[left] = arr[right]
}
while (left < right && (priovt + arr[left]) >= (arr[left] + priovt)){
left ++
}
if(left < right){
arr[right] = arr[left]
}
if(left >= right){
arr[left] = priovt
}
}
QuietSort( arr, L, right-1 )
QuietSort( arr, right+1, R )
}
QuietSort(nums,0,n-1)
var result = ""
for(i=0;i<n;i++){
result += nums[i]
}
console.log(result)
return result
};
minNumber([3,30,34,5,9])
</script>
</html>

该博客介绍了一个算法问题,即如何将非负整数数组的数字拼接成最小的数。示例展示了输入数组 `[10,2]` 和 `[3,30,34,5,9]` 的最小拼接结果分别为 `102` 和 `3033459`。算法通过自定义排序函数实现了这一目标,确保在连接过程中保持数字的最小值。
709

被折叠的 条评论
为什么被折叠?



