Skip to content

Latest commit

 

History

History
64 lines (47 loc) · 1.69 KB

179-largest-number.md

File metadata and controls

64 lines (47 loc) · 1.69 KB

179. Largest Number - 最大数

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

示例 1:

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

示例 2:

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

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


题目标签:Sort

题目链接:LeetCode / LeetCode中国

题解

Language Runtime Memory
cpp 4 ms 876.5 KB
class Solution {
public:
    string largestNumber(vector<int>& nums) {
        vector<string> ns;
        for (int i : nums){
            ns.push_back(to_string(i));
        }
        auto cmp = [](string& s1, string& s2) { return s1+s2 < s2+s1; };
        sort(ns.begin(), ns.end(), cmp);
        string res;
        for (string s : ns) {
            res = s + res;
        }
        // Remove beginning 0
        string nres;
        bool collect = false;
        for (int i=0; i<res.size(); ++i) {
            if (!collect && (i==res.size()-1) || res[i] != '0' ) {
                collect = true;
            }
            if (collect) {
                nres += res[i];
            }
        }
        return nres;
    }
};
static auto _ = [](){ ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }();