题解 | #第几位数#

数字序列中某一位的数字

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    public int findNthDigit (int n) {
        
        //10      180+10     2700+180+10
        //[0,10)  [10,100)   [100,1000)
        int bit = 1 ;//位数
        long low = 0 ;//下限
        long high = 10 ;//上限
        //找n在哪个区间(每个区间都有若干位数,当n高于区间的位数,就减去这些区间的位数
        //继续判断下一个区间
        while(n >= (high-low)*bit) {
            long count = (high-low)*bit;
            n-=count ;
            bit++ ;
            low=(low==0?10:low*10) ;
            high *= 10 ;

        }
        //在区间low~high的第num位数(从0开始)
        long num = n / bit + low ;
        //在第num位数的第一个位置
        int bbit = n % bit ;
        
        int div = (int)(Math.pow(10.0,bit-bbit-1)) ;
        return (int)(num/div)%10 ;

    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

2025-12-21 21:22
安徽农业大学 运营
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
实习简历求拷打
点赞 评论 收藏
分享
2025-12-24 14:10
成都锦城学院 C++
程序员花海:技能放最后 实习和项目没亮点 正确格式是业务技术加指标 c++不建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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