题目描述:

思路:说实话,完全没思路。看了题解后发现,这是个找规律的题。。。
0 占第0位
1~9 共9x1 = 9个数字 占位9x1 = 9 位
10~99 共9x10 = 90个数字 占位90x2 = 180 位
100~999 共9x100 = 900个数字 占位900x3 = 2700 位
…
附上题解代码
class Solution {
public int findNthDigit(int n) {
int digit = 1;
long start = 1;
long count = 9;
while (n > count) { // 1.
n -= count;
digit += 1;
start *= 10;
count = digit * start * 9;
}
long num = start + (n - 1) / digit; // 2.
return Long.toString(num).charAt((n - 1) % digit) - '0'; // 3.
}
}
本文深入探讨了一个寻找序列中第N位数字的算法问题,通过分析数字序列的规律,逐步推导出解决该问题的有效算法。文章详细解释了如何通过观察不同位数数字的数量和位置,形成一种递进的计算方式,最终实现快速定位并返回指定位置的数字。
395

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



