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])

Comments

Popular posts from this blog

Encrypt and Decrypt Strings

Degree of an Array

Minimum Sum of Four Digit Number After Splitting Digits