LeetCode 179. 最大数(Largest Number)

题目描述

 

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

示例 1:spa

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

示例 2:code

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

说明: 输出结果可能很是大,因此你须要返回一个字符串而不是整数。blog

 

解题思路

 

组成最大数应使得高位数字尽可能大,因此首先按照高位数字从大到小对数组排序,而后一次从高位到低位组成最大数。注意若数组全为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 };
相关文章
相关标签/搜索