問題分析
我們查找數位的方式是首先確定是第幾個數字n
,然後是確定n
的第幾位。
有一般規律可得,
1位數字的個數爲10 - 1
個數字,其所佔數位爲(10 - 1) * 1
2位數字的個數爲100 - 10
個數字,所佔數位爲(100 - 10) * 10
。
以此類推,我們可以利用這種方式快速確定數n
。
完整代碼
class Solution {
public:
int nthDigitInNum(int num, int n){
vector<int> digit;
while(num != 0){
digit.push_back(num % 10);
num /= 10;
}
return digit[digit.size() - n - 1];
}
int findNthDigit(int n) {
int digitNum{1};
while((pow(10, digitNum) - pow(10, digitNum - 1)) * digitNum < n){
n -= (pow(10, digitNum) - pow(10, digitNum - 1)) * digitNum;
digitNum++;
}
int nn = pow(10, digitNum - 1) + (n - 1) / digitNum;
return nthDigitInNum(nn, (n - 1) % digitNum);
}
};