我是靠谱客的博主 过时季节,这篇文章主要介绍【力扣】400. 第 N 位数字,现在分享给大家,希望可以做个参考。

400. 第 N 位数字

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位数字。
示例 1:

复制代码
1
2
3
4
输入:n = 3 输出:3 示例 2

示例 1:

复制代码
1
2
3
4
输入:n = 11 输出:0 解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。

提示:

  • 1 < = n < = 2 31 − 1 1 <= n <= 2^{31} - 1 1<=n<=2311

题解

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 区间 数字个数 所占位数 // 1-9 9 9 * 1 // 10-99 90 90 * 2 // 100-999 900 900 * 3 class Solution { public int findNthDigit(int n) { if(n < 10) return n; int d = 1, count = 9; // d是当前一个数所占位数,count是当前区间数字个数 while(n > (long) d * count){ // 计算位数 n -= d * count; d++; count *= 10; } int idx = n - 1; // 当前区间n对应的下标 int start = (int) Math.pow(10, d - 1); // 当前区间开始数字 int num = start + idx / d; // n所在数字 int digitIdx = idx % d; // n所在数字中的位下标 int digit = (num / (int)(Math.pow(10, d - digitIdx - 1))) % 10; // 得到n对应的位数的值 return digit; } }

最后

以上就是过时季节最近收集整理的关于【力扣】400. 第 N 位数字的全部内容,更多相关【力扣】400.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部