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 ...
随机推荐
- 上白泽慧音——tarjian
题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...
- python简单脚本-sql字符提取
a="""dr.GetStr("kh"), dr.GetStr("xm"), dr.GetStr("xh"), ...
- CF1079D Barcelonian Distance
思路: 模拟. 实现: #include <bits/stdc++.h> using namespace std; ; double dis(double x1, double y1, d ...
- [Python]输出中文报错的解决方法
问题现象:在PyCharm工具编辑python语句输出中文时,程序报错. 解决方法(2种): 1.在代码开头加#coding=utf-8(注意要加#) 2.还是在代码开头加#-*- coding: u ...
- 关于ubuntu终端全屏的时候不能显示底部
最近在win7的电脑上装了ubuntu,也就是双系统.打算之后工作就直接进入ubuntu,减少之前win7和虚拟机之间的切换.进入ubuntu后,发现一个奇怪的问题是,在终端全屏的时候,底部总是有几行 ...
- CSAPP lab1 datalab-handout
这是一个关于机器级的整数.浮点数表示和位运算的实验.要求用给定的操作符.尽可能少的操作数去实现对应的函数功能. 完整的实验包:链接: https://pan.baidu.com/s/1xUBi3XDl ...
- roi_pooling层
roi_pooling层先把rpn生成的roi映射到特征提取层最后一层,然后再分成7*7个bin进行池化 下面是roi_pooling层的映射到特征提取层的代码,可以看到用的是round函数,也就是说 ...
- Linux系统GEDIT编译运行C++
作为NOIP第一年强制使用Linux系统的考生,真的很难受,被迫还要学一波Linux系统. 正常的Windows对于较基础的程序员来说非常方便好用,但是对于高级程序员来说就是一个坑,于是就有了Linu ...
- java上传、下载、删除ftp文件
一共三个类,一个工具类Ftputil.,一个实体类Kmconfig.一个测试类Test 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/669710 ...
- C# 使用Epplus导出Excel [3]:合并列连续相同数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...