LeetCode热题(JS版) - 179. 最大数

109 阅读1分钟

题目描述

给定一组非负整数 nums,重新排列它们每个数字组成的字符串,返回其中最大的整数。

示例

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

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

解题思路

将数组中的元素转换为字符串,然后排序,最后依次拼接起来即可。

代码实现

var largestNumber = function (nums) {
  const res = nums
    .map(String)
    .sort((a, b) => {
      return a.concat(b) > b.concat(a) ? -1 : 1;
    })
    .join('');

  return res.charAt(0) === '0' ? '0' : res;
};

时间/空间复杂度

  • 时间复杂度:O(nlogn)O(n log n)。其中 nn 是数组的长度,主要是因为需要对字符串进行排序。

  • 空间复杂度:O(n)O(n)。需要用一个字符串数组来存储该数列中每一个元素对应的字符串。