400. Nth Digit

来源:互联网 发布:修身夹克 知乎 编辑:程序博客网 时间:2024/06/05 09:20

这就是简单数学题。先确定数字的index对应几位数,再利用推导出来的公式带入计算。

class Solution {public:    int findNthDigit(int n) {        //get range        int numSize=1;        int low=1;        int high=9*pow(10,numSize-1)*numSize;        while(1)        {            if(n>=low&&n<=high)                break;            numSize++;            low=high+1;            if(high>=INT_MAX-9*pow(10,numSize-1)*numSize)            {                high=INT_MAX;                break;            }            else                high=high+9*pow(10,numSize-1)*numSize;        }        //cout<<numSize<<endl;        //cout<<(n-low)%numSize<<endl;        if((n-low)%numSize==0)            return ((n-low)/(numSize*pow(10,numSize-1)))+1;        else            return ((int)((n-low)/(numSize*pow(10,numSize-1-((n-low)%numSize))))%10);    }};
0 0
原创粉丝点击