2025年--Lc216- 400. 第 N 位数字(找规律)-Java版

1.题目

2.思路

(1)1位数 1~9,9个数,总位数19=9
(2)2位数,10~99,90个数,总位数2
90=180

(3)3位数,100~999,900个数,总位数3*900=2700

d当前遍历到的位数,count当前位数下的所有整数的位数之和。

初始时 d=1,count=9。每次将 n 减去 d×count。

然后将 d 加 1,将 count 乘以 10,直到 n≤d×count。

此时的 d 是目标数字所在整数的位数,n 是所有 d 位数中从第一位到目标数字的位数。

3.代码实现

java 复制代码
class Solution {
    public int findNthDigit(int n) {
        int d=1;//代表当前是一位数
        int cnt=9;
        if(n<=9)
        {
            return n;
        }
        while(n>(long)d*cnt)//如果n>9的话
        {
            n=n-d*cnt;
            d++;//位数+1
            cnt=cnt*10;//当前范围内的数字个数*10
        }
        int index=n-1;
        //Math.pow(a, b):是 Java 中 java.lang.Math 类提供的静态方法,用于计算 a 的 b 次幂(即 a^b),返回值为 double 类型。
        int begin=(int)Math.pow(10,d-1);
        int num=begin+index/d;
        int digitIndex=index%d;
        int digit=(num/(int)(Math.pow(10,d-digitIndex-1)))%10;
        return digit;
        
    }
}
相关推荐
开开心心就好4 天前
轻量级PDF阅读器,仅几M大小打开秒开
linux·运维·服务器·安全·pdf·1024程序员节·oneflow
学传打活8 天前
【边打字.边学昆仑正义文化】_12_生命价值的体现(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
开开心心就好9 天前
小巧绿色免费关机工具,支持定时倒计时
linux·运维·服务器·安全·powerpoint·1024程序员节·foxmail
开开心心就好10 天前
跨平台高速下载工具,支持浏览器功能强大
运维·服务器·windows·pdf·旅游·媒体·1024程序员节
开开心心就好1 个月前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·windows·pdf·harmonyos·risc-v·1024程序员节
学传打活1 个月前
【边打字.边学昆仑正义文化】_5_宇宙物种创造简史(1)
微信公众平台·1024程序员节·汉字·昆伦正义文化
xcLeigh1 个月前
打破机房围墙:VMware+cpolar构建跨网络虚拟实验室
vmware·内网穿透·cpolar·实验室·远程访问·1024程序员节
开开心心就好1 个月前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·安全·ddos·可信计算技术·1024程序员节
unable code1 个月前
流量包取证-大流量分析
网络安全·ctf·misc·1024程序员节·流量包取证