Leetcode 400.第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的一部分。
 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;
     }
 }
Leetcode 400.第n个数的更多相关文章
- C++版 - Leetcode 400. Nth Digit解题报告
		
leetcode 400. Nth Digit 在线提交网址: https://leetcode.com/problems/nth-digit/ Total Accepted: 4356 Total ...
 - [leetcode] 400. Nth Digit
		
https://leetcode.com/contest/5/problems/nth-digit/ 刚开始看不懂题意,后来才理解是这个序列连起来的,看一下第几位是几.然后就是数,1位数几个,2位数几 ...
 - Java实现 LeetCode 400 第N个数字
		
400. 第N个数字 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -中找到第 n 个数字. 注意: n 是正数且在32为整形范围内 ( n < 231 ...
 - Leetcode 400. Nth digits
		
解法一: 一个几乎纯数学的解法 numbers: 1,...,9, 10, ..., 99, 100, ... 999, 1000 ,..., 9999, ... # of digits: 9 ...
 - LeetCode() 数字1的个数
		
int ones = 0; for (long m = 1; m <= n; m *= 10) { long a = n/m, b = n%m; ones += (a + 8) / 10 * m ...
 - Leetcode 200. 岛屿的个数(扩展)
		
1.题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 ...
 - Leetcode 466.统计重复个数
		
统计重复个数 定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n].例如,["abc", 3]="abcabcabc". 另一方面,如果我们可 ...
 - LeetCode. 位1的个数
		
题目要求: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例: 输入:00000000000000000000000000001011 输 ...
 - LeetCode 200. 岛屿的个数(Number of Islands)
		
题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1 ...
 
随机推荐
- Spring使用_进阶
			
概述 本文主要写了几个关于Spring Aware,多线程,计划任务(定时任务),条件注解,组合注解,元注解,Spring测试的小例子以及关于@Enable*注解的工作原理的理解. Spring Aw ...
 - Windwos下安装和使用MongoDB
			
1)下载安装包下载路径:https://www.mongodb.com/download-center#community包名称:mongodb-win32-x86_64-3.4.10-signed. ...
 - openssl安装介绍
			
#因CentOS7默认安装了openssl1.0版本,需要删除该版本,才能安装openssl.1.0.2l版本yum remove -y openssl openssl-devel cd /usr/l ...
 - kettle数据同步方法
			
1.实时性要求不高,采用全删全插的方式(适合于维度表.大数据量表) 2.有时间维度,直接从事实表同步的数据,可以采用根据时间字段进行筛选,增量同步.这个网上有很多例子,就不重复写了. 3.没有时间维度 ...
 - Objective-C - NSString 和 NSDate 互相轉換
			
記錄一下在 Objective-C 由 NSString 轉換為 NSDate 或 NSDate 轉換為 NSString 的方法. 很簡單,使用 NSDateFormatter 就可以令 NSStr ...
 - mac下只遍历目录不遍历文件
			
install brew install tree 命令 tree -d
 - android stuido ndk 开发
			
开发环境: Android studio 1.0.2 ndk android-ndk-r10d-windows-x86_64 ------------------------------------ ...
 - hrbust-1545-基础数据结构——顺序表(2)
			
http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) ...
 - Linux文件的IO操作 一
			
系统调用 系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务 为了更好地保护内核空间, ...
 - JS原型链(二)--new运算符的原理
			
new运算符的原理: 第一步:创建一个空对象,该对象继承构造函数的原型对象 第二步:执行这个构造函数,并且把this指向该空对象 第三步:返回:如果构造函数执行后返回的结果是一个object类型,则返 ...