首页 > 试题广场 >

最大数

[编程题]最大数
  • 热度指数:38219 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为n的数组nums,数组由一些非负整数组成,现需要将他们进行排列并拼接,每个数不可拆分,使得最后的结果最大,返回值需要是string类型,否则可能会溢出。

数据范围:
进阶:时间复杂度 ,空间复杂度:
示例1

输入

[30,1]

输出

"301"
示例2

输入

[2,20,23,4,8]

输出

"8423220"
示例3

输入

[2]

输出

"2"
示例4

输入

[10]

输出

"10"

备注:
输出结果可能非常大,所以你需要返回一个字符串而不是整数。
function solve( nums ) {
    nums.sort((a,b)=>`${b}${a}`-`${a}${b}`)
    return nums[0]?nums.join(''):'0'
}

发表于 2023-06-27 22:30:58 回复(0)
function solve( arr ) {
    let temp = '';
    let len = arr.length;

    for(let i = 0; i < len - 1; i++) {
        for(let j = i + 1; j < len; j++) {
            if(arr[i].toString().split('')[0] < arr[j].toString().split('')[0]) {
                [arr[i], arr[j]] = [arr[j], arr[i]]
            }
        }
    }
    temp = arr.join('');
    return temp;
}
发表于 2021-11-08 10:52:04 回复(0)
    for (var i = 0; i < nums.length; i++) {
        for (var j = 0; j < nums.length - i; j++){
            str1 = String(nums[j]) + String(nums[j+1])
            str2 = String(nums[j+1]) + String(nums[j])
            if (Number(str1) < Number(str2)) {
                var javl = nums[j]
                nums[j] = nums[j+1]
                nums[j+1] = javl
            } else if (Number(str1) === 0 && Number(str2) === 0) {
                nums = [0]
            }
        }
    }
    var str = nums.join('')
    return str

发表于 2021-09-05 12:45:47 回复(0)