#将整数进行字典排序#
386. 字典序排数
给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。
你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。
示例 1:
输入:n = 13 输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]
我主要四练习COmparator的用法,如果用会Comparator,那么此类其他字符类的排序也是可以的,时间空间复杂度没考虑;
代码
class Solution {
public List<Integer> lexicalOrder(int n) {
List<Integer> list = new ArrayList<>();
TreeSet<String> set=new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String a, String b) {
int size=Math.min(a.length(),b.length());
for(int i=0;i<size;i++){
if(a.charAt(i)!=b.charAt(i)){
return a.charAt(i)-b.charAt(i);
}
}
return a.length()-b.length();
}
});
for(int i=1;i<=n;i++){
set.add(String.valueOf(i));
}
for(int i=1;i<=n;i++){
list.add(Integer.parseInt(set.pollFirst()));
}
return list;
}
}
#计算机网络知识点总结#