#将整数进行字典排序#

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;
        }
    }
#计算机网络知识点总结#
全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务