Largest Number-LeetCode
题目:
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9]
, the largest formed number is 9534330
.
Note: The result may be very large, so you need to return a string instead of an integer.
分析:
这道题目最主要的是sort的规则。
1. 同样位数的数字,很好比较。12<19
2. 不同位置的数字,就比较麻烦了。例如 按照题目的意思,12<9 ; 但是, 12>121 。 所以我们采取了这样的比较规则:
数字a与b,通过比较ab与ba的大小,来对a与b进行排序。例如121与12, 12112<12121 ,所以12>121
因为需要进行拼接,所以一开始我们需要先把数字转成字符串。
代码:
class Solution:
# @param num, a list of integers
# @return a string
def largestNumber(self, num):
temp=[str(i) for i in num]
comp = lambda a,b:1 if a+b>b+a else -1 if a+b<b+a else 0
temp.sort(cmp = comp , reverse = True)
return str(int(''.join(temp)))