1. 程式人生 > 其它 >LeetCode——386. 字典序排數

LeetCode——386. 字典序排數

題目描述:

給定一個整數 n, 返回從 1 到 n 的字典順序。

例如,給定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

請儘可能的優化演算法的時間複雜度和空間複雜度。 輸入的資料 n 小於等於 5,000,000。

程式碼如下:

class Solution {
    public List<Integer> lexicalOrder(int n) {
        TreeMap<Integer, String> map = new TreeMap<>();
        for (int i = 1; i <=
n; i++) { map.put(i, String.valueOf(i)); } List<Map.Entry<Integer, String>> list = new ArrayList<>(map.entrySet()); list.sort(new Comparator<Map.Entry<Integer, String>>() { @Override public int compare(Map.Entry<
Integer, String>
o1, Map.Entry<Integer, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); List<Integer> arrayList = new ArrayList<>(); for (var entry : list) { arrayList.add(entry.getKey()); }
return arrayList; } }
class Solution {
    public List<Integer> lexicalOrder(int n) {
        TreeMap<Integer, String> map = new TreeMap<>();
        for (int i = 1; i <= n; i++) {
            map.put(i, String.valueOf(i));
        }
        List<Map.Entry<Integer, String>> list = new ArrayList<>(map.entrySet());
        list.sort((o1, o2) -> o1.getValue().compareTo(o2.getValue()));
        List<Integer> arrayList = new ArrayList<>();
        for (var entry : list) {
            arrayList.add(entry.getKey());
        }
        return arrayList;
    }
}

執行結果:
在這裡插入圖片描述