leetcode179_LargestNumber最大数[python]

题目:

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

输入: [10,2] 输出: 210 示例 2:
 
输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

  •  - 简单分析

拿到题目之后,略一分析,很快得出这是一道排序题,按照某种顺序排序。
具体怎么排,需要一些例子验证你的猜想。

我们知道sort()有一个参数key,可以传入一个方法,告诉sort按照key排序,但此题无法使用单参数的key,因为试了一下,发现每个元素的权重并不只跟自己有关。

例如你最初可能这样认为,先按每个数的首位数(最左边的数字)排序,大的在前,
首位数相同,则比较第二位……依次进行,直到最后一位。题目中第二个例子就是很好的说明,9,5,34,3,30,你很快发现这里有一个问题,3夹在34和30中间——我们的想法很好,但一遇到参差不齐的位数时就不好办了。 

 

  •  - 解题思路

我们需要一种更好的方法表示元素的权重。
这个题目说白了,也就是**按照某种权重,对数组进行排序**。

这种权重就是:假设两个数a和b,若a连b得到的整数比b连a大,则a的权重>b的权重,在排列成整数时,a就该在前面。
(其中a连b表示a在前,b连a表示b在前。ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值