Welcome to Subscribe On Youtube
400. Nth Digit
Description
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
Solutions
-
class Solution { public int findNthDigit(int n) { int k = 1, cnt = 9; while ((long) k * cnt < n) { n -= k * cnt; ++k; cnt *= 10; } int num = (int) Math.pow(10, k - 1) + (n - 1) / k; int idx = (n - 1) % k; return String.valueOf(num).charAt(idx) - '0'; } }
-
class Solution { public: int findNthDigit(int n) { int k = 1, cnt = 9; while (1ll * k * cnt < n) { n -= k * cnt; ++k; cnt *= 10; } int num = pow(10, k - 1) + (n - 1) / k; int idx = (n - 1) % k; return to_string(num)[idx] - '0'; } };
-
class Solution: def findNthDigit(self, n: int) -> int: k, cnt = 1, 9 while k * cnt < n: n -= k * cnt k += 1 cnt *= 10 num = 10 ** (k - 1) + (n - 1) // k idx = (n - 1) % k return int(str(num)[idx])
-
func findNthDigit(n int) int { k, cnt := 1, 9 for k*cnt < n { n -= k * cnt k++ cnt *= 10 } num := int(math.Pow10(k-1)) + (n-1)/k idx := (n - 1) % k return int(strconv.Itoa(num)[idx] - '0') }
-
/** * @param {number} n * @return {number} */ var findNthDigit = function (n) { let k = 1, cnt = 9; while (k * cnt < n) { n -= k * cnt; ++k; cnt *= 10; } const num = Math.pow(10, k - 1) + (n - 1) / k; const idx = (n - 1) % k; return num.toString()[idx]; };
-
public class Solution { public int FindNthDigit(int n) { int k = 1, cnt = 9; while ((long) k * cnt < n) { n -= k * cnt; ++k; cnt *= 10; } int num = (int) Math.Pow(10, k - 1) + (n - 1) / k; int idx = (n - 1) % k; return num.ToString()[idx] - '0'; } }