剑指OfferJZ32 把数组排成最小的数(JavaScript)

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:463806
本题知识点: 数组

题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
示例1
输入
[3,32,321]
返回值
“321323”

思路:
两两拼接后比较,大就反过来,然后继续拼接比较

function PrintMinNumber(numbers) {
    
    
    if (numbers.length === 0) return ''
    for (let i = 0; i < numbers.length; i++) {
    
    
        for (let j = i + 1; j < numbers.length; j++) {
    
    
            let s1 = numbers[i] + '' + numbers[j]
            let s2 = numbers[j] + '' + numbers[i]
            if (s1 > s2) {
    
    
                let temp = numbers[i]
                numbers[i] = numbers[j]
                numbers[j] = temp
            }
        }
    }
    let res = ''
    numbers.forEach(item => {
    
    
        res += item
    })
    return res
}

答案参考自:Leoncon

猜你喜欢

转载自blog.csdn.net/weixin_44523860/article/details/114591025