算法题 力扣400 第 N 位数字

leetcode400:第N数字 leetcode400:第N数字 给你一个整数 n ,你在无限整数序列[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第n 上的数字 阅读详情

题目:

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位数字。

示例 1:

输入:n = 3
输出:3
示例 2:

输入:n = 11
输出:0
解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。
 

提示:

1 <= n <= 231 - 1

 代码:

 public int findNthDigit(int n) {
        int i=1;
        long t=9,m=1,b=n;
        while(n-t*i>0){
            b=b-t*i;
            i++;
            t=t*10;
            m=m*10;
        }
        long j=b%i;
        long k=b/i;
        if(j==0){
            m--;
        }
        if(k>0){
            m=m+k;
        }
        if (j != 0) {
            j=i-j;
            for(int o=0;o<j;o++) {
                m=m/10;
            }
        }
        m=m%10;
        int v= (int)m;
        return v;
    }

分析:

读题可知他要求的是数字而不是数,也就是说n位数有n个数字,通过分析我们可以知道1位数有9个,共9个数字,两位数有90个,共180个数字,n位数有9*10^(n-1)个,共9*10^(n-1)*n个数字,由此来写下的我的代码。

个人在编写时觉得的三个点

1、j=0时

        当没有余数时表示她正好除尽,也就是说我们要去的是上一个数的末尾

2、j=i-j

        当j!=0时,他的第j位,表示他需要先除去i-j个10

3、long类型

        一开始我全部定义的是int变量,但测试样例是有一个n=10^10,这时候数来到了11位数,int类型存不下,所以需要long类型来存储

leetcode(力扣) 400. 第 N 数字 (数学规律) 文章目录题目描述:思路分析:完整代码: 题目描述: 给你一个整数 n ,你在无限整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 上的数字。 示例 1: 输入:n = 3 输出:3 示例 2: 输入:n = 11 输出:0 解释:第 11 数字序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是 0 ,它是 10 的一部分。 思路分析: 这道题暴力过不去啊~ 我上来直接用的暴力,从0开始数,这道题的数量级非常 阅读详情

相关推荐

力扣-400. 第 N 数字(中等)(思路)(Java

题目描述: 给你一个整数 n ,你在无限整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 数字。 示例 1: 输入:n = 3 输出:3 示例 2: 输入:n = 11 输出:0 解释:第 11 数字序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …里是 0 ,它是 10 的一部分。 提示: 1 <= n <= 231 - 1 思路: class Solution { public

shuzhan的博客 274

Leetcode 第 43 场双周赛题解(Python)

Leetcode 第 43场双周赛题解 周赛日期:2020/01/09 题目11716. 计算力扣银行的钱 难度: 简单 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始,他在周一的时候存入 1块钱。从周二到周日,他每天都比前一天多存入 1块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1块钱。 给你n,你返回在第 n天结束的时候他在力扣银行总共存了多少块钱。 示例 1: 输入:n = 4 输出:10 解释:第 4 天后,总额为 1...

blowfire123的博客 710

Leetcode算法(两数之和)

//给定一个整数数组 nums 和一个整数目标值 target,你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 // // 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 // // 你可以按任意顺序返回答案。 // // // // 示例 1: //输入:nums = [2,7,11,15], target = 9 //输出:[0,1] //解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 解法.

weixin_44059948的博客 773

【中等】力扣算法题解析LeetCode400:第 N 数字

LeetCode 400题要求在无限整数序列123456789101112...中找到第n数字。核心解法分三步:1)通过循环减去各组数(19数,2180等)确定n所在数字数k;2)计算目标数字num = 10^(k-1) + (n-1)/k;3)取数字的第(n-1)%kJava实现利用digit、start、count变量高效定,时间复杂度O(log₁₀n)。例如,n=10返回'1'(来自数字10的首)。该算法避免遍历,适用于n≤2³¹-1的大数场景。关键词: 数分组、数学定

ylumwd的博客 1568

leetcode 算法题400 (简单097) 罗马数字整数

leetcode 算法题400 (简单097) 罗马数字整数 题目介绍 在无限整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。 注意 n 是正数且在32为整形范围内 ( n < 231次幂)。 示例 输入: 3 输出: 3 输入: 11 输出: 0 说明: 第11数字序列 1, 2, 3, 4, 5...

FYuu95100的博客 143

​LeetCode刷题实战400:第 N 数字

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...

程序IT圈 356

算法题 第 N 数字

题目要求在无限整数序列中找出第n数字。该问题可以通过数学分组和定的方法高效解决。核心思路是将数字数分组,确定n所在的数范围后,计算具体的数字和该数字中的具体置。算法分为三步:确定数范围、定具体数字、提取目标。使用数学计算能避免构建整个序列,时间复杂度为O(log n),空间复杂度为O(1)。需注意边界条件和整数溢出问题,使用0-indexed计算能简化逻辑。该解法适用于大范围的n值(包括2³¹-1)。

红血哥 404

leetcode题:400. 第N个数字(简单)

一、题目描述:400. 第N个数字(简单) 在无限整数序列1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第n个数字。 注意: n是正数且在32为整形范围内(n < 231)。 示例 1: 输入: 3 输出: 3 示例 2: 输入: 11 输出: 0 说明: 第11数字序列 1, 2, 3, 4, 5, 6, 7, 8, ...

tankpanv的博客 796

400. 第 N 数字 findNthDigit

【★】400. 第 N 数字 findNthDigit 数统计 1数:1~9,共9个,占了 1 * 9 = 92数:10~99,共90个,占了 2 * 90 = 1803数:100~999,共900个,占了 3 * 900=2700; …… m数:共9*100(m-1)个,占了m*9*100(m-1)。 注意事项: 使用 long 型防止数据过大时产生溢出

「Inspire Creativity, Enrich Life」 681

【LeetCode 】: 400. 第N个数字

400. 第N个数字 问题描述: 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5(从下标0开始计数)是5,第131,第194,等等。 一个函数,求任意第n对应的数字。 题目链接:https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lc...

qq_36008321的博客 203

算法题:Leetcode 400题解:Python + list + 找出第N个数字

第N个数字无限整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。 注意: n 是正数且在32整数范围内 ( n < 231)。 示例 1: 输入: 3 输出: 3 示例 2: 输入: 11 输出: 0 说明: 第11数字序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是0,它是10的一部分...

JanSir的博客 709

Golang | Leetcode Golang题解之第400题第N数字

Golang | Leetcode Golang题解之第400题第N数字

weixin_66442839的博客 823

算法题】求第N数字,数列如下112123123412345123456

算法题】自增自然数列组,求第N数字,数列如下112123123412345123456首先,鄙视下出这个题目的人,人为增加难度,无聊。这个题目如果之前没见过,想短时间写出来还是需要一定的脑力的,一步一步抽丝剥茧吧:①先把该数列看成如下形式:11212312345123456……这样我们可以将每个子串单独分析,可以看出来第i个子串比第i-1个子串多一个数i,数i的长度为log10(i)+1,也...

Learning by doing 4904

数字操作——168670、233357400

新手刷题自用记录

Utgnryk的博客 1256

Java | Leetcode Java题解之第400题第N数字

Java | Leetcode Java题解之第400题第N数字

m0_57195758的博客 386

刷了四百道算法题,我在项目里用过哪几道呢?

大家好,我是老三,今天和大家聊一个话题:项目中用到的力扣算法。不知道从什么时候起,算法已经成为了互联网面试的标配,在十年前,哪怕如日中天的百度,面试也最多考个冒泡排序。后来,互联网越来越热,涌进来的人越来越多,整个行业越来越内卷的,算法也慢慢成了大小互联网公司面试的标配,力扣现在已经超过3000题了,那么这些题目有多少进入了面试的考察呢?

weixin_42907150的博客 938

【leetcode刷题】37.罗马数字整数——Java

似曾相识的一道题

公号:一条coding 1万+
上一篇: 报错Non-zero exit code (2)
下一篇: 力扣算法507 完美数
Yangshiwei....
博客等级 码龄6年 15粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值