题解 | #数字序列中某一位的数字#
数字序列中某一位的数字
https://www.nowcoder.com/practice/29311ff7404d44e0b07077f4201418f5
class Solution { public: int findNthDigit(int n) { // write code here if(n < 10) return n; // 个数小于10时候,就是当前字符序号 long long start = 1; // 一位数时,开始第一个数字为1,注意使用long long类型,否则容易越界 long long sum = 9; // 一位数时,总数为9个,注意使用long long类型,否则容易越界 int num = 1; // 表示位数为1 // int value = n; while (n > sum) { // 迭代到最接近位数区间 n -= sum; // 将前面位数区间的元素组合的数字个数剔除 num++; // 位数 start*= 10; // 更新下一位数时开始的数值 sum = num * start * 9; // 统计下一位数区间的字符个数 } int value = start + (n-1)/num; // 算一下是哪个数 int id = (n-1)%num; // 求余运算,求得数值的第几位 return to_string(value)[id]-'0'; // 把这个数的对应位置字符恢复数值返回 } };
挤挤刷刷! 文章被收录于专栏
记录coding过程