当前位置: 代码迷 >> 综合 >> Leetcode 400. Nth Digit
  详细解决方案

Leetcode 400. Nth Digit

热度:36   发布时间:2023-12-12 21:25:38.0

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Description

Nth Digit

2. Solution

  • Version 1
class Solution {
public:int findNthDigit(int n) {int digits = 1;long base = 9;while(n > digits * base) {n -= digits * base;digits++;base *= 10;}int residual = n % digits;int quotient = n / digits;int target = base / 9 + quotient + (residual?1:0) - 1;if(residual == 0) {return target % 10;}char s = to_string(target)[residual - 1];return s - '0';}
};
  • Version 2
class Solution {
public:int findNthDigit(int n) {int digits = 1;long base = 9;while(n > digits * base) {n -= digits * base;digits++;base *= 10;}int residual = n % digits;int quotient = n / digits;int target = base / 9 + quotient + (residual?1:0) - 1;int count = digits - residual + 1;if(residual == 0) {return target % 10;}int result = 0;while(count) {result = target % 10;target /= 10;count--;}return result;}
};

Reference

  1. https://leetcode.com/problems/nth-digit/description/