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;
        
    }
}
相关推荐
学传打活5 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16812 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心15 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552720 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552721 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝22 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552723 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552723 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552725 天前
Java实用类应用精讲
人工智能·1024程序员节
u0103055271 个月前
Java I/O核心操作实战
人工智能·1024程序员节