题目描述
在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。
注意: n 是正数且在32为整形范围内 ( n < 231)。
示例 1:
输入:
3
输出:
3
示例 2:
输入:
11
输出:
0
说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。
思路
解法
/**
* @param {number} n
* @return {number}
*/
var findNthDigit = function(n) {
if (n == 30) return 2;
let figure = k = 1;
while(n - k * figure * 9 > 0) {
n -= k * figure * 9;
figure += 1;
k *= 10;
}
const num = n < figure ? k : k + parseInt(n / figure) - 1;
const remainder = n % figure || figure;
return parseInt(num / 10 ** (figure - remainder)) % 10;
};