题目
在无限的整数序列 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的一部分。
代码模板:
class Solution {
public int findNthDigit(int n) {
}
}
分析
可以根据位数来找到那个数的第几位。
解答
public class Solution {
public int findNthDigit(int n) {
int len = 1;
long count = 9;
int start = 1;
while (n > len * count) {
n -= len * count;
len += 1;
count *= 10;
start *= 10;
}
start += (n - 1) / len;
String s = Integer.toString(start);
return Character.getNumericValue(s.charAt((n - 1) % len));
}
}

本文探讨了在无限整数序列中寻找第N个数字的算法。通过分析数字位数,设计了一种高效查找策略,适用于32位整型范围内的任意正数。示例展示了如何针对具体输入找到序列中的指定数字。
2837

被折叠的 条评论
为什么被折叠?



