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。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/lexicographical-numbers
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

採用遞迴,每遍歷一個樹,都把這個數字乘以10,再加上一到九,若是小於等於給定的數字,則加入list中,並繼續遞迴。

    private List<Integer> list = new
ArrayList<>(); private int n; public List<Integer> lexicalOrder(int n) { this.n = n; for (int i = 1; i < 10; i++) { if (i <= n) { list.add(i); find(i); } } return list; } private
void find(int value) { value *= 10; for (int i = 0; i < 10; i++) { int val = value + i; if (val <= n) { list.add(val); find(val); } else { return; } } }