力扣179:最大数【C++】

题目分析

原题:

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

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

分析:

这道题题意不难理解,暴力解法的思路也不难想,但是实现起来其实是比较困难的,而且时间复杂度远远达不到要求。因此要考虑能够减小时间复杂度的逻辑。同时要注意,返回的是字符串。

思路分析

我们可以先拿两个数{5,34}举例子,这两个数在不拆分的情况下,可以组成的整数个数为两个,534和345,显然534要更大,因此要测试用例为这两个数,则答案就是”534“。

那么我们该如何用代码实现呢?大家可以观察,534和345这两个数字是怎么得到的,是不是像是用了一种特殊的加法,而字符串与数字类型不同,谁在前,加出来的结果是有区别的。因此,这种加法的原理跟字符串的拼接一样。所以自然而然想到把所有的数字转换为字符串进行拼接,这是解题的精髓之一。

返回这个例子{5,34},假如数据不变,而顺序变了呢,即{34,5}。我们能够判断出来,这个整数是534,那么我们如何将这个整数以字符串形式返回呢?

可能小伙伴觉得,这不简单嘛?但是这是在只有两个数字的情况下,如果整个字符串数组包括很多元素,我们要按什么原则将这个整数拼接起来呢?没错,呼之欲出,排序。

排序原则的构造也是解题的精髓之一。大家可以这么思考&#x

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值