leetcode
179. 最大数

问题描述

LeetCode 179. 最大数 (opens in a new tab),难度中等

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

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

示例 1

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

示例 2

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

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 10^9

题解

排序

解题思路:现将 int 类型转成 str 类型,然后进行字符串比较,存在字符串情况 ['33', '332', '334'] 以及 nums[i] 的范围 0 <= nums[i] <= 10^9,所以我们将字符串拉长再去比较

Solution.py
class Solution(object):
    def largestNumber(self, nums):
        # int 转 str
        nums = list(map(str, nums))
        # 因为 nums[i] 的范围是 10^9,所以我们需要拉长 nums[i],以便比较 ['33', '332', '334']
        nums.sort(key=lambda x: x * 10, reverse=True)
        return str(int(''.join(nums)))