← All problems

386. Lexicographical Numbers

MediumOpen on LeetCodeProblem statement

Problem Statement

386. Lexicographical Numbers

Medium


Given an integer n, return all the numbers in the range [1, n] sorted in lexicographical order.

You must write an algorithm that runs in O(n) time and uses O(1) extra space. 

 

Example 1:

Input: n = 13
Output: [1,10,11,12,13,2,3,4,5,6,7,8,9]

Example 2:

Input: n = 2
Output: [1,2]

 

Constraints:

Java — dfs

Source file
class Solution {
    List<Integer> ans = new ArrayList<>();

    public List<Integer> lexicalOrder(int n) {
        for (int i = 1; i < 10; i++)
            solve(i, n);
        return ans;
    }

    private void solve(int base, int n) {
        if (base > n)
            return;
        ans.add(base);
        for (int i = 0; i < 10; i++)
            solve(base * 10 + i, n);
    }
}