# Solving Leetcode Interviews in Seconds with AI: Lexicographical Numbers


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "386" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> 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:  1 <= n <= 5 * 104  

	# Explanation
	Here's a solution to generate numbers in lexicographical order within the range [1, n] with O(n) time complexity and O(1) extra space (excluding the output array).

*   **Iterative Deepening:** Start with 1, and repeatedly extend the current number by appending 0 to it (multiplying by 10). If the extended number exceeds *n*, backtrack and try incrementing the current number.
*   **Backtracking Increment:** If extending the number goes beyond *n*, or if the last digit of the number is 9, backtrack to the last number where incrementing is possible (i.e., the last digit is not 9).
*   **O(n) time, O(1) space**

	
	# Code
	```python
	def lexicalOrder(n: int) -> list[int]:
    """
    Generates numbers from 1 to n in lexicographical order.

    Args:
        n: The upper bound of the range.

    Returns:
        A list of integers sorted lexicographically.
    """
    result = []
    curr = 1
    for _ in range(n):
        result.append(curr)
        if curr * 10 <= n:
            curr *= 10
        else:
            if curr >= n:
                curr //= 10
            curr += 1
            while curr % 10 == 0:
                curr //= 10
    return result
	```
			
