DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Nth Digit

Given an integer n, return the nth digit of the infinite integer sequence [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...].

Example 1:

Input: n = 3
Output: 3

Example 2:

Input: n = 11
Output: 0
Explanation: The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.

Constraints:

  • 1 <= n <= 231 - 1

SOLUTION:

class Solution:
    def findNthDigit(self, n: int) -> int:
        prevcumsum = None
        cumsum = 0
        l = 1
        while n >= cumsum:
            prevcumsum = cumsum
            nextcumsum = cumsum + 9 * l * (10 ** (l - 1))
            if nextcumsum >= n:
                break
            cumsum = nextcumsum
            l += 1
        n -= prevcumsum
        k, n = divmod(n - 1, l)
        num = str(10 ** (l - 1) + k)
        return int(num[n])
Enter fullscreen mode Exit fullscreen mode

Top comments (0)