[路飞][LeetCode]179_最大数

141 阅读1分钟

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:

输入: nums = [10,2]
输出: "210"

示例 2:

输入: nums = [3,30,34,5,9]
输出: "9534330"

示例 3:

输入: nums = [1]
输出: "1"

示例 4:

输入: nums = [10]
输出: "10"

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 109

解题思路

  • 思路是将原数组排序 使得前面的位置的数字尽可能大
  • 做一个特殊的降序排列 a + b 与 b + a 比较
  • 将排完序的列表拼接字符串输出

解题代码

var largestNumber = function(nums) {
    nums.sort((a,b)=> (b+''+a) - (a+''+b) )
    return nums[0]?nums.join(''):'0'
};

如有任何问题或建议,欢迎留言讨论!