Leetcode179. 最大数

Every day a Leetcode

题目来源:179. 最大数

解法1:贪心

对于数组 nums 中的任意两个数 a 和 b,我们将其转换为字符串后,如果 to_string(a) + to_string(b) > to_string(b) + to_string(a),说明 a 应该放在 b 的前面,这样拼接成的数字更大。

注意特判全为 0 的情况,这样会拼接出类似于 "0...00" 的字符串,应该只返回 "0"。

代码:

c 复制代码
/*
 * @lc app=leetcode.cn id=179 lang=cpp
 *
 * [179] 最大数
 */

// @lc code=start
class Solution
{
private:
    static bool cmp(const int &a, const int &b)
    {
        return to_string(a) + to_string(b) > to_string(b) + to_string(a);
    }

public:
    string largestNumber(vector<int> &nums)
    {
        int n = nums.size();
        sort(nums.begin(), nums.end(), cmp);
        string ans;
        for (const int &num : nums)
            ans += to_string(num);
        return ans[0] == '0' ? "0" : ans;
    }
};
// @lc code=end

结果:

复杂度分析:

时间复杂度:O(nlogn),其中 n 是数字 nums 的元素个数。

空间复杂度:O(1)。

相关推荐
add45a3 分钟前
嵌入式C++低功耗设计
开发语言·c++·算法
DeepModel5 分钟前
【概率分布】指数分布(Exponential Distribution)原理、推导与实战
python·算法·概率论
_饭团9 分钟前
指针核心知识:5篇系统梳理3
c语言·数据结构·算法·leetcode·面试·学习方法·改行学it
2401_8747325311 分钟前
C++中的状态模式
开发语言·c++·算法
BB学长11 分钟前
LBM vs FVM:谁才是 CFD 的未来?
人工智能·算法·机器学习
闻缺陷则喜何志丹12 分钟前
【枚举】P6786「SWTR-6」GCDs & LCMs|普及+
c++·算法·洛谷
m0_7166670732 分钟前
实时数据压缩库
开发语言·c++·算法
dapeng287040 分钟前
多协议网络库设计
开发语言·c++·算法
星空露珠1 小时前
又双叒叕统计被炸死的lua脚本
开发语言·数据结构·算法·游戏·lua
阿Y加油吧1 小时前
力扣打卡——day01
java·算法·leetcode