华为OD面试手撕真题 - 最大数

题目描述

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

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

示例1

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

示例2

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

提示

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

题解

力扣原题链接

思路:贪心

  1. n个数字按字符串方式进行拼接,任何顺序拼接得到字符串长度是相同。相同长度全是数字字符的字符串的字典序和数字比大小是相同的。
  2. 明白1的规律之后,我们将输入的数字数组转换为字符串数组。然后使用贪心算法的规律进行排序a b 两个字符串,如果a + b 的字典序大于 b + a 则应该a 排在 b的前面
  3. 排序

你可能感兴趣的:(华为OD面试手撕代码真题合集,华为od,面试手撕真题,华为OD面试手撕真题)