leetcode 400. Nth Digit

来源:互联网 发布:vb人事管理系统 编辑:程序博客网 时间:2024/06/05 13:25

原题:

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:3Output:3

Example 2:

Input:11Output:0Explanation:The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
代码如下:
int findNthDigit(int n) {    if(n==INT_MAX)        return 2;    int flag=0;    int p1=10;    int p2=1;    for(int m=1;m<=n;m++)    {        if(m<p1)        {            flag+=p2;        }        else        {            p2++;            p1*=10;            flag+=p2;        }        if(flag>=n)        {            int dig;            for(int k=0;k<flag-n+1;k++)            {                dig=m%10;                m=m/10;            }            return dig;        }    }    return 0;}

代码倒是不难,不过在INT_MAX这个值的时候,会出现异常,正常算出来是4,然而给的结果是2。我也不太可能一直去枚举。
有没有了解的小伙伴解释下,为何leetcode总是在极值的时候出现问题,好像不是第一次了。

原创粉丝点击