400. Nth Digit

問題分析

我們查找數位的方式是首先確定是第幾個數字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);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章