台州新农村建设网站,3万网站建设费会计分录,dw网页设计案例,常用网站推广方法及资源400. 第 N 位数字
在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 位数字。
注意#xff1a;n 是正数且在 32 位整数范围内#xff08;n 231#xff09;。
示例 1#xff1a;
输入#xff1a;3 输出#xff1a;3 示例 2#xff1a;
输入n 是正数且在 32 位整数范围内n 231。
示例 1
输入3 输出3 示例 2
输入11 输出0 解释第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是 0 它是 10 的一部分
解题思路
num记录当前的数字dig记录位数我们的数字是从一位数二位数…这样递增的base代表当前位数拥有多少个数字比如有9个个位数90个二位数
因此我们只要不断地遍历一位数、二位数找出我们目标位所在在数字为num 再计算出我们需要的目标位在num中的下标
代码
class Solution {public int findNthDigit(int n) {long base9,dig1;int num0;while(nbase*dig){n-base*dig;numbase;base*10;dig;}num(n-1)/dig1;long idx(n-1)%dig1;while(dig--idx)num/10;return num%10;}
}