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)。

相关推荐
代码中介商5 分钟前
LRU缓存算法:双向链表+哈希表实现
算法·链表·缓存
lqqjuly9 分钟前
计算理论—图灵机、复杂性、信息论与机器学习的理论基础
算法
Hiter_John22 分钟前
Golang的循环语句
开发语言·算法·golang
hope_wisdom31 分钟前
C/C++数据结构之二叉树基础
c语言·数据结构·c++·二叉树
磊 子31 分钟前
STL算法库讲解1
开发语言·c++·算法
8Qi832 分钟前
LeetCode 474:一和零(Ones and Zeroes)—— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
stolentime38 分钟前
CF2066D2 Club of Young Aircraft Builders (hard version)题解
c++·算法·动态规划·组合数学
rqtz43 分钟前
【C++】源码编译 Qt5.15.3|Ubuntu22.04 下 ROS 开发环境搭建
开发语言·c++·qt·ros
洛水水43 分钟前
图床项目实现:注册登录 + 文件上传等功能的完善
网络·c++·mysql·图床
一个不知名程序员www44 分钟前
算法学习入门---算法题DAY3
c++·算法