/*
题目:
数字以0123456789101112131415…的格式序列化到一个字符序列中。
在这个序列中,第5位(从0开始计数,即从第0位开始)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
*/ #include<iostream>
#include<string.h> using namespace std; //自己实现pow,使用codeblocks中的pow,会转化为浮点数进行截断,得到的结果不准确。
int pow(int num,int digits){ int res = 1;
for(int i = 0; i < digits; i++){
res *= num;
}
return res;
}
/*
解法一:
一个数字一个数字遍历,当数字位数之和超过n,则所需数字在遍历到的最后一个数字。
*/
int NumberOfSequence1(int n){
if(n < 0) return -1;
int currNumber = 0;
int myCount = 0;
while(myCount <= n){
myCount += to_string(currNumber).size();
currNumber++;
}
return to_string(currNumber-1)[n-myCount+to_string(currNumber-1).size()] -'0';
} /*
解法二:
0~9中有10个数,10~99有2*90=180个数,100~999有3*900=2700个数
例1001,可以有10+180<1001 && 10+180+2700>1001,所以要找的数在100~999中
1001-10-180=881,881/3=270,881%3=1,所以要找的数在100+270=370中
其中截止到369有810个数字,3为第811个数字,7为第812个数字,0为813个数字
从0开始计数,则7为811位数字。
*/
int NumberOfSequence2(int n){
if(n < 0) return -1;
if(n < 9) return n; int myCount = 10;
int i = 2;
while(myCount <= n){
myCount = myCount + (int)i*9*pow(10,i-1);
i++;
}
int temp = n - (myCount - (i-1)*9*pow(10,i-2));
int res_index= temp%(i-1);
int res_val = (temp / (i - 1) + pow(10,i-2)); return to_string(res_val)[res_index] - '0';
} int main(){
cout<<NumberOfSequence2(1500000)<<endl;
cout<<NumberOfSequence1(1500000)<<endl;
}

  

剑指offer-面试题44-数字序列中某一位的数字-脑筋急转弯的更多相关文章

  1. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  2. 剑指 Offer 44. 数字序列中某一位的数字 + 找规律 + 数位

    剑指 Offer 44. 数字序列中某一位的数字 Offer_44 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author Wale ...

  3. C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解

    剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...

  4. 《剑指offer》第四十四题(数字序列中某一位的数字)

    // 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...

  5. 【Offer】[44] 【数字序列中某一位的数字】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 数字以0123456789101112131415..的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是 ...

  6. 《剑指offer》面试题44. 数字序列中某一位的数字

    问题描述 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等. 请写一个函数,求任意第n位 ...

  7. 每日一题 - 剑指 Offer 44. 数字序列中某一位的数字

    题目信息 时间: 2019-07-01 题目链接:Leetcode tag: 规律 难易程度:中等 题目描述: 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个 ...

  8. 剑指 Offer 44. 数字序列中某一位的数字

    题目描述 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等. 请写一个函数,求任意第n位 ...

  9. 剑指offer——46数字序列中某一位的数字

    题目: 数字以0123456789101112131415…的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等.请写一个函数,求任意第n位对应的数 ...

随机推荐

  1. VirtualBox桥接网络,设置虚拟机联网,连接VirtualBox虚拟系统中的数据库等

    由于最近搭建一个项目自己的阿里云的服务器内存不足,自己笔记本使用VitrualBox电脑虚拟linux系统来搭建,把这次使用过程遇到的问题记录下来也能帮助遇到同样的小伙伴. 软件: VirtualBo ...

  2. CSS的常用单位介绍

    ①px: 像素单位:它是英文单词pixel的缩写,意思为像素,即构成图片的每一个点,为图片显示的最小单位.它是一个绝 对尺寸单位,是固定的. ②em: 相对长度单位:它是英文单词emphasize的缩 ...

  3. eclipse导入项目时的一些准备

    导入前的工作: 1.因为别人项目的运行环境可能和我们不一样,所以首先要在要导入的项目里面找到.setting文件,修改下面的xml文件,这个文件里面是关于服务器的一些配置的信息,你可以改成与你电脑一样 ...

  4. Java使用反射实现根据字符串类名及参数创建对象

    要根据字符串创建对象,可以使用 Class.forName(String) 方法: 而要新建一个可以指定初始值参数的对象,就必须得使用 getConstructor(Class<T>... ...

  5. sqlserver install on linux chapter two

    The previous chapter is tell us how to install sqlerver on linuix Today, we will see how to make it ...

  6. Django表单Form类对空值None的替换

    最近在写项目的时候用到Form,发现这个类什么都好,就是有些空值的默认赋值真是很不合我胃口. 查阅资料.官方文档后发现并没有设置该值的方式.于是,便开始了我的踩坑之路...... 不过现在完美解决了, ...

  7. 分组密码CBC加密缺陷

    title: 分组密码CBC加密缺陷 date: 2017-05-15 10:04:47 tags: ["密码学"] --- 关于密码学的种种漏洞以及利用网上也有不少,但是比较零散 ...

  8. centos7 安装 iRedmail 后 给nginx添加虚拟主机

    iRedmail安装参考官方文档和 https://ywnz.com/linuxyffq/4563.html 准备工作 更新操作系统 yum update -y 安装必要组件 yum install ...

  9. Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress

    更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...

  10. U盘制作macOS Sierra的启动盘

    1.macOS Sierra的几种安装方式 *开机时按住command+option+r 进行联网在线安装.PS:在网速好的情况还行,但是如果网络差的时候,它会让你崩溃的. *使用光盘进行安装. *今 ...