虽然标记为简单,代码实现也简单,但是我觉得不能算简单把。
写了好几遍,官方解答是用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'; } };