把数组排成最小的数

把数组排成最小的数

http://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

将数组成员两两比较 ,两个数的其中一个在前边时拼接后更小的话,将那个数放在前边。
也就是进行一次排序, 123 + 32 = 12332 32+123 = 32123 12332<32123 将123放在前边

let arr = [3,5,1,4,2]
// let arr = [3,32,321]
function MinNumber(n1, n2) {
    let num1 = `${n1}${n2}`
    let num2 = `${n2}${n1}`
    if(num1> num2){
        return true
    }else {
        return false
    }
}

function PrintMinNumber(numbers) {
    for (let i = 0; i < numbers.length; i++) {
        for (let j = i + 1; j < numbers.length; j++) {
            if (MinNumber(numbers[i], numbers[j])) {
                [numbers[j], numbers[i]] = [numbers[i], numbers[j]]

            }
        }
    }
    let num = "";
    for (let i in numbers){
        num+=numbers[i]
    }
    return num
}

console.log(PrintMinNumber(arr));
全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务