给定一个长度为n的数组nums,数组由一些非负整数组成,现需要将他们进行排列并拼接,每个数不可拆分,使得最后的结果最大,返回值需要是string类型,否则可能会溢出。
数据范围:
,
进阶:时间复杂度
,空间复杂度:)
[30,1]
"301"
[2,20,23,4,8]
"8423220"
[2]
"2"
[10]
"10"
输出结果可能非常大,所以你需要返回一个字符串而不是整数。
from functools import cmp_to_key
class Solution:
def solve(self , nums: List[int]) -> str:
def compare(x,y):
if x+y > y+x:
return -1
elif x+y < y+x:
return 1
return 0
nums_str = list(map(str,nums))
nums_str.sort(key=cmp_to_key(compare))
res = ''.join(nums_str).lstrip('0')
return res if res else '0'