【leetcode】179 最大数(排序)

    xiaoxiao2023-11-07  167

    题目链接:

    题目描述

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

    示例 1:

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

    示例 2:

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

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

    输入:[0,0] 输出:"0"

    代码

    自定义排序的比较器,然后进行排序。将排序后的列表拼接成字符串。 重点在比较器的定义。 复杂度分析 时间复杂度 O(nlogn) 空间复杂度 O(1)

    class Solution { // 快速排序,根据字典序比较 // 时间复杂度O(nlogn),空间复杂度O(1) public: string largestNumber(vector<int>& nums) { string ret; if(nums.empty()) return ret; sort(nums.begin(),nums.end(),cmp); for(auto s:nums) ret += to_string(s); return ret[0] == '0'?"0":ret; } // 如果a+b比b+a大,则将a排在前面 bool static cmp(const int a, const int b){ return to_string(a) + to_string(b) > to_string(b)+to_string(a); } };
    最新回复(0)