虽然标记为简单,代码实现也简单,但是我觉得不能算简单把。
写了好几遍,官方解答是用n每次取减区间长度。我之前的实现是计算累计区间总长度。总是奇怪的问题,个别案例过不了。
官方的题解也有一个有意思的地方,比较的时候如果不把n强制转成long long 解答也是错误的。但是n明明是外部传入的int型数据,不会越界,很费解。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
int findNthDigit(int n) {
if(n < 10){
return n;
}
// write code here
int start = 1;
int bit = 1;
while((long long)n > start * 9 * bit){
n = n - start * 9 * bit;
start *= 10;
++bit;
}
string res = to_string((n - 1)/ bit + start);
return res[(n - 1) % bit] - '0';
}
};



京公网安备 11010502036488号