题目描述

 

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

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

示例 2:

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

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

 

解题思路

 

组成最大数应使得高位数字尽量大,所以首先按照高位数字从大到小对数组排序,然后一次从高位到低位组成最大数。注意若数组全为0,则直接返回一个0.

 

代码

 

 1 class Solution {
 2 public:
 3     string largestNumber(vector<int>& nums) {
 4         vector<string> numStr;
 5         for(int num: nums)
 6             numStr.push_back(to_string(num));
 7         sort(numStr.begin(), numStr.end(), cmp);
 8         if(numStr.size() && numStr[0] == "0") return "0";
 9         string s = "";
10         for(string num: numStr)
11             s += num;
12         return s;
13     }
14     static bool cmp(string i, string j){
15         return i + j > j + i;
16     }
17 };

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2022-03-02
猜你喜欢
  • 2021-11-11
  • 2021-11-17
  • 2021-08-30
  • 2021-12-02
  • 2021-05-24
  • 2022-02-18
  • 2022-12-23
相关资源
相似解决方案