题目描述:
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入:[10,2]
输出:210
示例 2:
输入:[3,30,34,5,9]
输出:9534330
思路:贪心算法,有a和b两个数想组成最大数,只用比较ab和ba即可 假如有abc三个数,找出两两组合最大的,假设是ab>ac>bc,那么三个数就变成了ab和c两个数之间的问题了。
class Solution {
//贪心
public String largestNumber(int[] nums) {
int count=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==0) count++;
}
if(count == nums.length) return "0";
List<String> list=new ArrayList<>();
for(int i=0;i<nums.length;i++){
list.add(String.valueOf(nums[i]));
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String str1,String str2){
return (str2+str1).compareTo(str1+str2);
}
});
}
String res=new String();
for(String ss:list){
res+=ss;
}
return res;
}
}