【Leetcode】386. Lexicographical Numbers

题目链接:https://leetcode.com/problems/lexicographical-numbers/
题目:
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.

思路:
回溯基本题。。。

算法:

    public List<Integer> lexicalOrder(int n) {
        for (int i = 1; i < 10; i++) {
            if(i>n)
                break;
            dfs(n,i);
        }
        return res;
    }

    List<Integer> res = new ArrayList<Integer>();

    public void dfs(int n, int cur) {
        if (cur > n)
            return;
        res.add(cur);
        for (int i = 0; i < 10; i++) {
            int nc = cur * 10 + i;
            if (nc > n)
                return;
            dfs(n, nc);
        }
    }

你可能感兴趣的:(LeetCode)