400. Nth Digit
题目描述
思路
计算出当前数字属于几位数digitCount,然后计算出目标数字在这个数中的具体位子digitIndex
代码
#include <iostream>
using namespace std;
class Solution {
public:
int findNthDigit(int n) {
long long base = 9;
int digitCount = 1;
while (n - base * digitCount > 0) {
n -= base * digitCount;
base *= 10;
++digitCount;
}
int numIndex = (n - 1) / digitCount;
int digitIndex = digitCount - 1 - (n - 1) % digitCount;
int num = base / 9 + numIndex;
while (digitIndex--)
num /= 10;
return num % 10;
}
};
int main() {
int n;
Solution s;
while (cin >> n) {
cout << s.findNthDigit(n) << endl;
}
}
本文介绍了一种高效的算法来找到自然数序列中第N位的数字。通过逐步缩小搜索范围,该算法能够快速定位目标数字所在的数及其具体位置。
2294

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



