前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 400. 第N个数字(数学)

LeetCode 400. 第N个数字(数学)

作者头像
Michael阿明
发布2020-07-13 17:04:27
6500
发布2020-07-13 17:04:27
举报

1. 题目

在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。

注意: n 是正数且在32为整形范围内 ( n < 2^31)。

代码语言:javascript
复制
示例 1:
输入:
3
输出:
3

示例 2:
输入:
11
输出:
0
说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 1--0--, 11, ... 里是0,它是10的一部分。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/nth-digit 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

《剑指Offer》同题:面试题44. 数字序列中某一位的数字

2. 解题

  • 1位数9个,数字长度9
  • 2位数90个,数字长度2*90
  • 3位数900个,长度3*900
代码语言:javascript
复制
class Solution {
public:
    int findNthDigit(int n) {
        if(n < 10)
        	return n;
        long len = 9;
        int i = 2, k = 10, num=9;
        while(len+i*9*pow(10,i-1) < n)
        {
        	len += i*9*pow(10,i-1);
        	num += 9*pow(10,i-1);
        	i++;
        }
        if((n-len)%i)
            num += (n-len)/i + 1;
        else
            num += (n-len)/i;
        string s(to_string(num));
        return s[((n-len)%i + i -1)%i]-'0';
    }
};
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
class Solution {	//2020.2.24
public:
    int findNthDigit(int n) {
        if(n < 10)
            return n;
        int count = 9, i = 2, num = 9;
        while(count+9*pow(10,i-1)*i <= n)
        {
            count += 9*pow(10,i-1)*i;
            num += 9*pow(10,i-1);
            i++;
        }
        n -= count;//剩余的位数
        if(n%i != 0)//不等于0,下一个数的,第几位
            return fd(num+n/i+1,n%i);
        return fd(num+n/i,i);//否则,当前数的,最后一位
    }

    int fd(int num, int n)
    {
        int i = int(1e9);
        int bit;
        while(num/i == 0)
            i /= 10;
        while(n--)
        {
            bit = num/i;
            num -= bit*i;
            i /= 10;
        }
        return bit;
    }
};
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档