看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起!
题目
给定一组非负整数 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 <= 1000 <= 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'
};
如有任何问题或建议,欢迎留言讨论!