给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1: 输入:nums = [10,2]
输出:"210"
示例 2: 输入:nums = [3,30,34,5,9]
输出:"9534330"
解题思路:从前往后依次排序,eg: 比较 num[1] + num[j] 和 num[j] + num[1], 如果 num[1] + num[j] < num[j] + num[1],则num[1]与s2交换位置;然后j指针向后移1,遍历完j就可以得到index=1时的最佳值
def largestNumber(self, nums: List[int]) :
m = len(nums)
s = ""
for i in range(m-1):
for j in range(i+1, m):
if int(str(nums[i])+str(nums[j])) < int(str(nums[j])+str(nums[i])):
nums[i], nums[j] = nums[j], nums[i]
for x in range(m):
s += str(nums[x])
return str(int(s)) #直接返回s,会出现输入 [0,0] ,输出”00“,而不是”0“
网友评论