题目描述
给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是string类型 否则可能会溢出
解题思路
1. 先对列表进行降序排序
2.将列表中的值分别转换成string类型
3.对比当前元素和下一个相邻元素两两交换位置的合并值 ,如果相邻的元素在前可以使数更大,则交换两个元素的位置,以此类推,依此比较数组中的元素,如下图所示:
4.最后直到将所有元素排好序,循环结束。
5.需要注意的是,如果排序好的数组的第一个元素是0,则直接返回0。
核心代码
# nums = [3,30,34,5,9]
def findMax(nums):
if not nums:
return
nums.sort(reverse = True)
map(str,nums) #将数组中的值映射为str
for i in range(0,len(nums)-1):
for j in range(0,len(nums)-1-i):
if int(nums[j+1]+nums[j])>int(nums[j]+nums[j+1]):
nums[j],nums[j+1] = nums[j+1],nums[j]
if nums[0] == '0':
return '0'
return ''.join(nums)

京公网安备 11010502036488号