Find Kth Number Program in Python

Introduction:

The task at hand is to implement a Python function that finds the kth lexicographically smallest integer in the range from 1 to n. To achieve this, we will use a depth-first search (DFS) approach, exploring the numbers in lexicographical order. Let’s dive into the implementation.

Also checkout:

Implementation:

def findkthNumber(n, k):
    def dfs(curr, k):
        nonlocal result
        if k == 0:
            result = curr
            return
        for digit in range(10):
            if curr * 10 + digit <= n and (curr != 0 or digit != 0):
                dfs(curr * 10 + digit, k - 1)

    result = None
    dfs(0, k)
    return result

# Example usage:
n = 13
k = 2
print(findkthNumber(n, k))

Explanation:

  1. The findkthNumber function takes two parameters: n (the upper limit of the range) and k (the kth lexicographically smallest integer to find).
  2. Inside the function, there is a nested dfs (depth-first search) function, which performs the recursive exploration.
  3. The base case of the recursion is when k becomes 0, indicating that we have found the kth lexicographically smallest integer. The current value of curr is then assigned to the result variable.
  4. The DFS explores all possible digits (0 to 9) and checks if appending the digit to the current number (curr * 10 + digit) is within the range [1, n] and if it satisfies the lexicographical order condition.
  5. The DFS is initiated with an initial value of 0 for curr and k as the number of steps remaining.
  6. The final result is returned after the DFS completes its exploration.

Example:

For n = 13 and k = 2, the output of findkthNumber(n, k) will be 10. The lexicographical order is [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9], and the second element is 10.

Conclusion:

The implemented function provides a flexible and efficient solution to the problem of finding the kth lexicographically smallest integer in a given range. The depth-first search approach ensures that the numbers are explored in the desired order, leading to an accurate and reliable solution.

Summary:

The integration of a depth-first search algorithm within the findkthNumber function provides an efficient way to identify the kth lexicographically smallest integer within a given range. By exploring all possible digits and adhering to lexicographical order, the function delivers precise results, making it a valuable tool for various applications requiring such computations.

Leave a Reply

Discover more from Geeky Codes

Subscribe now to keep reading and get access to the full archive.

Continue reading