第n个数

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

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

示例 1:

输入:

3

输出:

3

示例 2:

输入:

11

输出:

0

说明:

第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。

 public class Solution {
/**
* 这里是找第n个数字(这里的数和数字有区别,数字可以理解为将所有数拼合成一个字符串后的第n为对应的数字(0-9))
* 这里首先分析一下位数和规律
* 个位数:1-9,一共9个,共计9个数字
* 2位数:10-99,一共90个,共计180个数字
* 3位数:100-999,一共900个,共计2700个数字
* 4位数,1000-9999,一共9000个,共计36000个数字
* 以此类推,
* 这样我们就可以首先定位到是哪个数,再找到其对应的数字
* */ public int findNthDigit(int n) {
//小心溢出
int digitType = 1;
long digitNum = 9;
//定位到是几位数
while(n > digitNum*digitType){
n -= (int) digitNum*digitType ;
digitType++;
digitNum*=10;
}
//定位到是这些几位数里面的第几个的第几位
int indexInSubRange = (n -1) / digitType;
int indexInNum = (n -1) % digitType;
//还原数字
int num = (int)Math.pow(10,digitType - 1) + indexInSubRange ;
int result = Integer.parseInt((""+num).charAt(indexInNum)+"");
return result;
}
}

最新文章

  1. 从游戏脚本语言说起,剖析Mono所搭建的脚本基础
  2. Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件
  3. Google Play Store —与google服务器通信时出现问题
  4. 创建自己的Vagrant box
  5. PHP 连接 MySQL
  6. MySQL必知必会的查询
  7. Mingw32 for ffmpeg
  8. [转] DateTime.Now.ToString()的较为全面的使用介绍
  9. 剑指 offer set 8 树的子结构
  10. phpmyadmin导出数据库为什么是php文件
  11. .net 开发定时执行的windows服务
  12. Ajax访问PHP页面出现的跨域问题
  13. final、finally、finalize差异
  14. CCNA -OSI七层模型
  15. ASP.NET Core 使用UrlFirewall对请求进行过滤
  16. C# - 表达式与语句
  17. T-SQL :SQL Server 定义数据完整性 6大约束(三)
  18. 进入jsp页面的6种方法
  19. java独立小程序实现AES加密和解密
  20. 38.html----相对于父元素的fixed定位的实现

热门文章

  1. java面试题(基础部分)
  2. 更改IDEA默认使用JDK1.5编译项目
  3. JavaScript 跨域请求
  4. Mysql 主备配置
  5. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
  6. WPF中Canvas使用
  7. CAD控件界面显示与隐藏(网页版)
  8. pytorch中的view
  9. TCP头校验和计算算法详解
  10. 学习笔记之30个常用的maven命令