题目:
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:
输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
链接:https://leetcode-cn.com/problems/largest-number
思路:
1、这道题其实是一个排序问题。自定义一种排序比较方法,然后使用冒泡排序即可
Python代码:
class Solution(object):
def largestNumber(self, nums):
"""
:type nums: List[int]
:rtype: str
"""
if len(nums)==0:
return ""
size = len(nums)
for i in range(size-1):
for j in range(size-i-1):
if int(str(nums[j])+str(nums[j+1])) < int(str(nums[j+1])+str(nums[j])):
nums[j],nums[j+1] = nums[j+1],nums[j]
ret = ''
for item in nums:
ret = ret+str(item)
return str(int(ret))
C++代码:
class Solution {
public:
string largestNumber(vector<int>& nums) {
if(nums.size()==0){
return "0";
}
int size = nums.size();
for(int i=0; i<size; i++){
for (int j=0; j<size-i-1; j++){
if(to_string(nums[j])+to_string(nums[j+1])<to_string(nums[j+1])+to_string(nums[j])){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
string ret;
for (int item:nums){
ret = ret+to_string(item);
}
if (nums[0]!=0){
return ret;
}else{
return "0";
}
}
};