1.题目
2.解法(使用排序)
思路:
两两元素组合,比如3 和 32 , 332, 323, 比较谁大谁小,小的放前面, 32 3, 接着继续比较,这样的话,可以获得一个从小到大的组合。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
public class Solution {
public String PrintMinNumber(int[] numbers){
if(numbers == null || numbers.length == 0){
return new String();
}
ArrayList<Integer> list = new ArrayList<>();
for(int t : numbers){
// 自动装箱
list.add(t);
}
// 使用匿名类实现排序规则
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2){
String s1 = o1 + "" + o2;
String s2 = o2 + "" + o1;
return s1.compareTo(s2);
}
});
String str = "";
for(Integer t : list){
str += t;
}
return str;
}
}
时间复杂度为O(nlogn), 空间复杂度为O(n)