LeetCode——386. 字典序排數
阿新 • • 發佈:2021-04-25
題目描述:
給定一個整數 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;
}
}
執行結果: