博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]--400. Nth Digit
阅读量:6906 次
发布时间:2019-06-27

本文共 990 字,大约阅读时间需要 3 分钟。

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …

Note:

n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:    3Output:    3

Example 2:

Input:    11Output:    0

Explanation:

The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … is a 0, which is part of the number 10.

解释:1,2,3,4,5…这样的数列,n<9时,自然得出来的就是数列中数,但是到了10就有两位,到了100就有三位,而这个n是表示位数,所以11就是10的那个零,结果返回0。

分析规律

个位数 是1-9 bit范围 9
两位数 10-99bit范围 2*90
三位数 100-999范围 3*900
…………
先确定给定值在哪个范围内 找出此范围的起始值10^n
注意取位置时减1 再进行操作
需要注意越界问题 count*10 9一直乘10 所以会越界 处理越界用long型

public int findNthDigit(int n) {        int len = 1;        long count = 9;        int start = 1;        while (n > len * count) {            n -= len * count;            len += 1;            count *= 10;            start *= 10;        }        start += (n - 1) / len;        String s = Integer.toString(start);        return Character.getNumericValue(s.charAt((n - 1) % len));    }

转载地址:http://cwqdl.baihongyu.com/

你可能感兴趣的文章
argz_create函数
查看>>
vmware HA与vmware FT功能对比
查看>>
分区表添加分区的问题
查看>>
从数据库生成和控制treeview
查看>>
linux基础:vbox+ubuntu环境,常见命令+基本脚本编写与执行
查看>>
面向物联网的几大开源操作系统
查看>>
百度分享按钮代码
查看>>
openCV vs2013配置
查看>>
Resin优化方案
查看>>
GC参数整理
查看>>
前后端常见的几种鉴权方式
查看>>
Oracle11g DMP 文件导入到 10g
查看>>
双网卡同时使用配置
查看>>
恢复密码
查看>>
20180504早课记录03-Linux
查看>>
11.交换路由远程管理
查看>>
GIT命令
查看>>
rip路由协议基本配置
查看>>
守护进程 python
查看>>
搭建FTP
查看>>