0
点赞
收藏
分享

微信扫一扫

剑指 Offer 44. 数字序列中某一位的数字

木匠0819 2022-03-11 阅读 47

在这里插入图片描述

class Solution {
    public int findNthDigit(int n) {
        // 计算该数字由几位数字组成,由1位:digits = 1;2位:digits = 2...
        long base = 9,digits = 1;
        while (n - base * digits > 0){
            n -= base * digits;
            base *= 10;
            digits ++;
        }

        // 计算真实代表的数字是多少
        int idx =(int)(n % digits);  // 注意由于上面的计算,n现在表示digits位数的第n个数字
        if (idx == 0)idx = (int)digits;
        long number = 1;
        for (int i = 1;i < digits;i++)
            number *= 10;
        number += (idx == digits)? n/digits - 1:n/digits;

        // 从真实的数字中找到我们想要的那个数字
        for (int i=idx;i<digits;i++) number /= 10;
        return (int)number % 10;
    }
}
举报

相关推荐

0 条评论