LeetCode 400. 第N个数字(C++、python)

在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 个数字。

注意:
是正数且在32为整形范围内 ( n < 231)。

示例 1:

输入:
3

输出:
3

示例 2:

输入:
11

输出:
0

说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。

C++

class Solution {
public:
    int findNthDigit(int n) 
    {
        int a=9;
        long long i=1;
        int start=1;
        while(i*a<n)
        {
            n-=i*a;
            i++;
            a*=10;
            start*=10;
        }
        int last=start+(n-1)/i;
        int index=(n-1)%i;
        string tmp=to_string(last);
        return tmp[index]-'0';
    }
};

python

class Solution:
    def findNthDigit(self, n):
        """
        :type n: int
        :rtype: int
        """
        i=1
        start=1
        a=9
        while i*a<n:
            n-=i*a
            i+=1
            a*=10
            start*=10
        last=start+(n-1)//i
        index=(n-1)%i
        tmp=str(last)
        return int(tmp[index])
        

猜你喜欢

转载自blog.csdn.net/qq_27060423/article/details/84970324