题解 | #数字序列中某一位的数字#

数字序列中某一位的数字

https://www.nowcoder.com/practice/29311ff7404d44e0b07077f4201418f5

#include <string>
class Solution {
public:
    int findNthDigit(int n) {
        if (n < 10) return n;
        int start = 1;
        int end = 10;
        long long bit = 1;

        // 小于10的数字一位数,1~9,共9个数字,9位;
        // 小于100的数字两位数,10~99,共90个数字,180位;
        // 小于1000的数字三位数,100~999,共900个数字,2700位;
        
        // 定位区间
        while ((long long) n >= (end - start)*bit) {
            // 减之前位数
            n -= (end - start) * bit;  
            // 更新区间头尾
            start *= 10;
            end *= 10;
            bit++;
        }
        // 0123456789 10 11 12 13 14 15
        // (n-1) / bit 是定位到第几个数,bit是这个范围内的整数长度
        // (n-1) % bit 是定位到这个整数上的在长度上的第几个
        string res = to_string(start + (n-1)/bit);
        return res[(n - 1) % bit] - '0';
    }
};

2023-剑指-搜索算法 文章被收录于专栏

2023-剑指-搜索算法

全部评论

相关推荐

07-02 13:50
闽江学院 Java
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务