LeetCode

Given an integer n, return 1 - n in lexicographical order.

For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].

Please optimize your algorithm to use less time and space. The input size may be as large as 5,000,000.

按字典序求所给范围数字列表

回溯,dfs

class Solution {
    List<Integer> res;
    public List<Integer> lexicalOrder(int n) {
        res = new ArrayList<>();
        for (int i=1; i<10; i++) {
            if (i > n)
                break;
            dfs(n, i);
        }
        return res;
    }
    public void dfs(int n, int cur) {
        if (cur > n)
            return;
        res.add(cur);
        for (int i=0; i<10; i++) {
            int next = cur * 10 + i;
            if (next > n)
                return;
            dfs(n, next);
        }
    }
}
原文地址:https://www.cnblogs.com/wxisme/p/9300523.html